From 071f9656543dae87faf8a6914bc053a601e3f474 Mon Sep 17 00:00:00 2001 From: travismccauley Date: Wed, 7 Jan 2004 15:32:36 +0000 Subject: [PATCH] Initial revision --- PaletteFunctions.js | 178 ++ PracticalBrowserSniffer.js | 160 ++ WEB-INF/.DS_Store | Bin 0 -> 6148 bytes WEB-INF/lib/LICENSE-commons-beanutils.txt | 60 + WEB-INF/lib/LICENSE-commons-collections.txt | 60 + WEB-INF/lib/LICENSE-commons-fileupload.txt | 60 + WEB-INF/lib/LICENSE.bsf.txt | 53 + WEB-INF/lib/LICENSE.commons-digester.txt | 60 + WEB-INF/lib/LICENSE.commons-lang.txt | 60 + WEB-INF/lib/LICENSE.commons-logging.txt | 60 + WEB-INF/lib/LICENSE.jakarta-oro.txt | 56 + WEB-INF/lib/LICENSE.javassist.txt | 478 ++++ WEB-INF/lib/LICENSE.log4j.txt | 48 + WEB-INF/lib/LICENSE.ognl.txt | 103 + WEB-INF/lib/bsf-2.3.0.jar | Bin 0 -> 175348 bytes WEB-INF/lib/commons-beanutils-1.6.1.jar | Bin 0 -> 118726 bytes WEB-INF/lib/commons-collections-2.1.jar | Bin 0 -> 165119 bytes WEB-INF/lib/commons-configuration-1.0-dev.jar | Bin 0 -> 16842 bytes WEB-INF/lib/commons-dbcp-1.0-dev-20020806.jar | Bin 0 -> 77244 bytes WEB-INF/lib/commons-digester-1.5.jar | Bin 0 -> 109096 bytes WEB-INF/lib/commons-fileupload-1.0.jar | Bin 0 -> 22379 bytes WEB-INF/lib/commons-lang-1.0.jar | Bin 0 -> 63861 bytes WEB-INF/lib/commons-logging-1.0.2.jar | Bin 0 -> 26388 bytes WEB-INF/lib/commons-pool-1.0.jar | Bin 0 -> 26872 bytes WEB-INF/lib/jakarta-oro-2.0.6.jar | Bin 0 -> 65368 bytes WEB-INF/lib/javassist-2.5.1.jar | Bin 0 -> 317370 bytes WEB-INF/lib/jdbc-2.0.jar | Bin 0 -> 6727 bytes WEB-INF/lib/log4j-1.2.6.jar | Bin 0 -> 350525 bytes WEB-INF/lib/mysql-driver.jar | Bin 0 -> 125961 bytes WEB-INF/lib/ognl-2.5.1.jar | Bin 0 -> 148610 bytes WEB-INF/lib/stratum-1.0-b3.jar | Bin 0 -> 19496 bytes WEB-INF/lib/tapestry-3.0-beta-3.jar | Bin 0 -> 713263 bytes WEB-INF/lib/tapestry-contrib-3.0-beta-3.jar | Bin 0 -> 206015 bytes WEB-INF/lib/torque-3.0.jar | Bin 0 -> 324520 bytes WEB-INF/lib/village-2.0-dev-20021111.jar | Bin 0 -> 26213 bytes WEB-INF/web.xml | 70 + build.xml | 167 ++ images/.DS_Store | Bin 0 -> 6148 bytes images/deselect_left.gif | Bin 0 -> 526 bytes images/deselect_left_off.gif | Bin 0 -> 414 bytes images/move_down.gif | Bin 0 -> 586 bytes images/move_down_off.gif | Bin 0 -> 449 bytes images/move_up.gif | Bin 0 -> 527 bytes images/move_up_off.gif | Bin 0 -> 416 bytes images/select_right.gif | Bin 0 -> 473 bytes images/select_right_off.gif | Bin 0 -> 373 bytes images/show-inspector.gif | Bin 0 -> 3873 bytes images/transparent.gif | Bin 0 -> 149 bytes images/warning.gif | Bin 0 -> 369 bytes images/workbench.gif | Bin 0 -> 2576 bytes roster.css | 189 ++ roster.html | 14 + schema/.DS_Store | Bin 0 -> 6148 bytes schema/id-table-schema.xml | 29 + schema/roster-schema.xml | 1 + src/.DS_Store | Bin 0 -> 6148 bytes src/java/.DS_Store | Bin 0 -> 6148 bytes src/java/org/.DS_Store | Bin 0 -> 6148 bytes src/java/org/thdl/.DS_Store | Bin 0 -> 6148 bytes src/java/org/thdl/roster/.DS_Store | Bin 0 -> 12292 bytes .../org/thdl/roster/EntitySelectionModel.java | 154 + src/java/org/thdl/roster/Global.java | 182 ++ .../roster/PaletteMergeTableProcessor.java | 174 ++ src/java/org/thdl/roster/Roster.application | 66 + src/java/org/thdl/roster/RosterConstants.java | 10 + src/java/org/thdl/roster/RosterEngine.java | 43 + src/java/org/thdl/roster/RosterQuery.java | 243 ++ .../org/thdl/roster/RosterQueryAgent.java | 301 ++ src/java/org/thdl/roster/RosterTest.java | 38 + src/java/org/thdl/roster/TokenMaker.java | 26 + src/java/org/thdl/roster/Visit.java | 75 + src/java/org/thdl/roster/components/.DS_Store | Bin 0 -> 6148 bytes .../roster/components/AbbreviatedInsert.html | 4 + .../roster/components/AbbreviatedInsert.java | 50 + .../roster/components/AbbreviatedInsert.jwc | 21 + .../roster/components/AddressDisplay.html | 17 + .../roster/components/AddressDisplay.java | 23 + .../thdl/roster/components/AddressDisplay.jwc | 34 + .../org/thdl/roster/components/Border.html | 73 + .../org/thdl/roster/components/Border.java | 24 + .../org/thdl/roster/components/Border.jwc | 74 + .../org/thdl/roster/components/Century.html | 2 + .../org/thdl/roster/components/Century.java | 43 + .../org/thdl/roster/components/Century.jwc | 14 + .../roster/components/ConditionalInsert.html | 7 + .../roster/components/ConditionalInsert.java | 19 + .../roster/components/ConditionalInsert.jwc | 28 + .../roster/components/CountryDisplay.html | 11 + .../roster/components/CountryDisplay.java | 19 + .../thdl/roster/components/CountryDisplay.jwc | 14 + .../components/CulturalAreaDisplay.html | 1 + .../components/CulturalAreaDisplay.java | 80 + .../roster/components/CulturalAreaDisplay.jwc | 20 + .../thdl/roster/components/DateFormatter.html | 2 + .../thdl/roster/components/DateFormatter.java | 26 + .../thdl/roster/components/DateFormatter.jwc | 14 + .../roster/components/DisciplineDisplay.html | 1 + .../roster/components/DisciplineDisplay.java | 80 + .../roster/components/DisciplineDisplay.jwc | 24 + .../roster/components/DocumentDisplay.html | 12 + .../roster/components/DocumentDisplay.java | 50 + .../roster/components/DocumentDisplay.jwc | 22 + .../roster/components/LanguageDisplay.html | 1 + .../roster/components/LanguageDisplay.java | 80 + .../roster/components/LanguageDisplay.jwc | 24 + .../roster/components/MemberTypeDisplay.html | 1 + .../roster/components/MemberTypeDisplay.java | 115 + .../roster/components/MemberTypeDisplay.jwc | 20 + .../components/OrganizationDisplay.html | 34 + .../components/OrganizationDisplay.java | 22 + .../roster/components/OrganizationDisplay.jwc | 66 + .../thdl/roster/components/PersonDisplay.html | 44 + .../thdl/roster/components/PersonDisplay.java | 22 + .../thdl/roster/components/PersonDisplay.jwc | 122 + .../thdl/roster/components/PhoneDisplay.html | 16 + .../thdl/roster/components/PhoneDisplay.java | 27 + .../thdl/roster/components/PhoneDisplay.jwc | 31 + .../roster/components/ProjectDisplay.html | 31 + .../roster/components/ProjectDisplay.java | 22 + .../thdl/roster/components/ProjectDisplay.jwc | 66 + .../thdl/roster/components/forms/.DS_Store | Bin 0 -> 6148 bytes .../components/forms/AddressFields.html | 25 + .../components/forms/AddressFields.java | 61 + .../roster/components/forms/AddressFields.jwc | 35 + .../components/forms/OrganizationFields.html | 62 + .../components/forms/OrganizationFields.java | 22 + .../components/forms/OrganizationFields.jwc | 48 + .../roster/components/forms/PersonFields.html | 81 + .../roster/components/forms/PersonFields.java | 22 + .../roster/components/forms/PersonFields.jwc | 99 + .../roster/components/forms/PhoneFields.html | 11 + .../roster/components/forms/PhoneFields.java | 22 + .../roster/components/forms/PhoneFields.jwc | 34 + .../components/forms/ProjectFields.html | 57 + .../components/forms/ProjectFields.java | 22 + .../roster/components/forms/ProjectFields.jwc | 46 + .../roster/components/forms/WizardTabs.html | 40 + .../roster/components/forms/WizardTabs.java | 77 + .../roster/components/forms/WizardTabs.jwc | 40 + src/java/org/thdl/roster/om/.DS_Store | Bin 0 -> 6148 bytes src/java/org/thdl/roster/om/Address.java | 26 + src/java/org/thdl/roster/om/AddressPeer.java | 15 + src/java/org/thdl/roster/om/BaseAddress.java | 837 ++++++ .../org/thdl/roster/om/BaseAddressPeer.java | 880 ++++++ .../org/thdl/roster/om/BaseContactInfo.java | 1047 +++++++ .../thdl/roster/om/BaseContactInfoPeer.java | 1310 +++++++++ src/java/org/thdl/roster/om/BaseCountry.java | 553 ++++ .../org/thdl/roster/om/BaseCountryPeer.java | 778 +++++ .../org/thdl/roster/om/BaseCulturalArea.java | 561 ++++ .../thdl/roster/om/BaseCulturalAreaPeer.java | 778 +++++ .../org/thdl/roster/om/BaseDiscipline.java | 561 ++++ .../thdl/roster/om/BaseDisciplinePeer.java | 778 +++++ src/java/org/thdl/roster/om/BaseDocument.java | 734 +++++ .../org/thdl/roster/om/BaseDocumentPeer.java | 964 +++++++ .../org/thdl/roster/om/BaseDocumentType.java | 561 ++++ .../thdl/roster/om/BaseDocumentTypePeer.java | 778 +++++ src/java/org/thdl/roster/om/BaseLanguage.java | 561 ++++ .../org/thdl/roster/om/BaseLanguagePeer.java | 778 +++++ src/java/org/thdl/roster/om/BaseMember.java | 1519 ++++++++++ .../org/thdl/roster/om/BaseMemberPeer.java | 2533 +++++++++++++++++ .../thdl/roster/om/BaseOrganizationData.java | 1206 ++++++++ .../roster/om/BaseOrganizationDataPeer.java | 826 ++++++ .../om/BaseOrganizationOrganizationType.java | 584 ++++ .../BaseOrganizationOrganizationTypePeer.java | 946 ++++++ .../thdl/roster/om/BaseOrganizationType.java | 561 ++++ .../roster/om/BaseOrganizationTypePeer.java | 778 +++++ .../org/thdl/roster/om/BasePersonData.java | 1756 ++++++++++++ .../thdl/roster/om/BasePersonDataPeer.java | 892 ++++++ .../thdl/roster/om/BasePersonPersonType.java | 584 ++++ .../roster/om/BasePersonPersonTypePeer.java | 946 ++++++ .../org/thdl/roster/om/BasePersonType.java | 561 ++++ .../thdl/roster/om/BasePersonTypePeer.java | 778 +++++ src/java/org/thdl/roster/om/BasePhone.java | 890 ++++++ .../org/thdl/roster/om/BasePhonePeer.java | 790 +++++ .../org/thdl/roster/om/BaseProjectData.java | 1206 ++++++++ .../thdl/roster/om/BaseProjectDataPeer.java | 826 ++++++ .../roster/om/BaseProjectProjectType.java | 584 ++++ .../roster/om/BaseProjectProjectTypePeer.java | 946 ++++++ .../org/thdl/roster/om/BaseProjectType.java | 561 ++++ .../thdl/roster/om/BaseProjectTypePeer.java | 778 +++++ .../org/thdl/roster/om/BasePublication.java | 693 +++++ .../thdl/roster/om/BasePublicationPeer.java | 790 +++++ .../thdl/roster/om/BaseResearchInterest.java | 1432 ++++++++++ .../om/BaseResearchInterestCulturalArea.java | 584 ++++ .../BaseResearchInterestCulturalAreaPeer.java | 946 ++++++ .../om/BaseResearchInterestDiscipline.java | 584 ++++ .../BaseResearchInterestDisciplinePeer.java | 946 ++++++ .../om/BaseResearchInterestLanguage.java | 584 ++++ .../om/BaseResearchInterestLanguagePeer.java | 946 ++++++ .../roster/om/BaseResearchInterestPeer.java | 802 ++++++ src/java/org/thdl/roster/om/ContactInfo.java | 36 + .../org/thdl/roster/om/ContactInfoPeer.java | 15 + src/java/org/thdl/roster/om/Country.java | 27 + src/java/org/thdl/roster/om/CountryPeer.java | 22 + src/java/org/thdl/roster/om/CulturalArea.java | 20 + .../org/thdl/roster/om/CulturalAreaPeer.java | 15 + src/java/org/thdl/roster/om/Discipline.java | 20 + .../org/thdl/roster/om/DisciplinePeer.java | 15 + src/java/org/thdl/roster/om/Document.java | 20 + src/java/org/thdl/roster/om/DocumentPeer.java | 15 + src/java/org/thdl/roster/om/DocumentType.java | 20 + .../org/thdl/roster/om/DocumentTypePeer.java | 15 + src/java/org/thdl/roster/om/Language.java | 20 + src/java/org/thdl/roster/om/LanguagePeer.java | 15 + src/java/org/thdl/roster/om/Member.java | 72 + src/java/org/thdl/roster/om/MemberPeer.java | 147 + src/java/org/thdl/roster/om/Organization.java | 71 + .../org/thdl/roster/om/OrganizationData.java | 63 + .../thdl/roster/om/OrganizationDataPeer.java | 15 + .../om/OrganizationOrganizationType.java | 44 + .../om/OrganizationOrganizationTypePeer.java | 15 + .../org/thdl/roster/om/OrganizationType.java | 20 + .../thdl/roster/om/OrganizationTypePeer.java | 15 + src/java/org/thdl/roster/om/Person.java | 80 + src/java/org/thdl/roster/om/PersonData.java | 89 + .../org/thdl/roster/om/PersonDataPeer.java | 15 + .../org/thdl/roster/om/PersonPersonType.java | 44 + .../thdl/roster/om/PersonPersonTypePeer.java | 19 + src/java/org/thdl/roster/om/PersonType.java | 20 + .../org/thdl/roster/om/PersonTypePeer.java | 15 + src/java/org/thdl/roster/om/Phone.java | 24 + src/java/org/thdl/roster/om/PhonePeer.java | 15 + src/java/org/thdl/roster/om/Project.java | 70 + src/java/org/thdl/roster/om/ProjectData.java | 64 + .../org/thdl/roster/om/ProjectDataPeer.java | 15 + .../thdl/roster/om/ProjectProjectType.java | 44 + .../roster/om/ProjectProjectTypePeer.java | 15 + src/java/org/thdl/roster/om/ProjectType.java | 20 + .../org/thdl/roster/om/ProjectTypePeer.java | 15 + src/java/org/thdl/roster/om/Publication.java | 20 + .../org/thdl/roster/om/PublicationPeer.java | 15 + .../org/thdl/roster/om/ResearchInterest.java | 105 + .../om/ResearchInterestCulturalArea.java | 44 + .../om/ResearchInterestCulturalAreaPeer.java | 15 + .../roster/om/ResearchInterestDiscipline.java | 44 + .../om/ResearchInterestDisciplinePeer.java | 15 + .../roster/om/ResearchInterestLanguage.java | 45 + .../om/ResearchInterestLanguagePeer.java | 15 + .../thdl/roster/om/ResearchInterestPeer.java | 15 + src/java/org/thdl/roster/om/RosterMember.java | 7 + .../org/thdl/roster/om/RosterMemberData.java | 11 + .../org/thdl/roster/om/RosterMemberType.java | 5 + .../roster/om/RosterMemberTypeException.java | 13 + .../org/thdl/roster/om/RosterMergeData.java | 10 + .../org/thdl/roster/om/RosterOmException.java | 13 + .../thdl/roster/om/map/AddressMapBuilder.java | 82 + .../roster/om/map/ContactInfoMapBuilder.java | 87 + .../thdl/roster/om/map/CountryMapBuilder.java | 76 + .../roster/om/map/CulturalAreaMapBuilder.java | 76 + .../roster/om/map/DisciplineMapBuilder.java | 76 + .../roster/om/map/DocumentMapBuilder.java | 85 + .../roster/om/map/DocumentTypeMapBuilder.java | 76 + .../roster/om/map/LanguageMapBuilder.java | 76 + .../thdl/roster/om/map/MemberMapBuilder.java | 99 + .../om/map/OrganizationDataMapBuilder.java | 84 + ...rganizationOrganizationTypeMapBuilder.java | 82 + .../om/map/OrganizationTypeMapBuilder.java | 76 + .../roster/om/map/PersonDataMapBuilder.java | 95 + .../om/map/PersonPersonTypeMapBuilder.java | 82 + .../roster/om/map/PersonTypeMapBuilder.java | 76 + .../thdl/roster/om/map/PhoneMapBuilder.java | 78 + .../roster/om/map/ProjectDataMapBuilder.java | 84 + .../om/map/ProjectProjectTypeMapBuilder.java | 82 + .../roster/om/map/ProjectTypeMapBuilder.java | 76 + .../roster/om/map/PublicationMapBuilder.java | 78 + ...esearchInterestCulturalAreaMapBuilder.java | 82 + .../ResearchInterestDisciplineMapBuilder.java | 82 + .../ResearchInterestLanguageMapBuilder.java | 82 + .../om/map/ResearchInterestMapBuilder.java | 80 + src/java/org/thdl/roster/pages/.DS_Store | Bin 0 -> 6148 bytes src/java/org/thdl/roster/pages/Admin.html | 1 + src/java/org/thdl/roster/pages/Admin.page | 24 + src/java/org/thdl/roster/pages/Edit.html | 15 + src/java/org/thdl/roster/pages/Edit.java | 19 + src/java/org/thdl/roster/pages/Edit.page | 16 + src/java/org/thdl/roster/pages/Home.html | 38 + src/java/org/thdl/roster/pages/Home.java | 157 + src/java/org/thdl/roster/pages/Home.page | 75 + src/java/org/thdl/roster/pages/Login.html | 81 + src/java/org/thdl/roster/pages/Login.java | 182 ++ src/java/org/thdl/roster/pages/Login.page | 123 + src/java/org/thdl/roster/pages/Member.html | 1 + src/java/org/thdl/roster/pages/Member.page | 151 + .../org/thdl/roster/pages/MemberPage.java | 28 + src/java/org/thdl/roster/pages/Members.html | 55 + src/java/org/thdl/roster/pages/Members.page | 74 + .../org/thdl/roster/pages/MembersPage.java | 206 ++ .../org/thdl/roster/pages/RosterPage.java | 99 + src/java/org/thdl/roster/pages/Search.html | 38 + src/java/org/thdl/roster/pages/Search.java | 303 ++ src/java/org/thdl/roster/pages/Search.page | 99 + .../org/thdl/roster/pages/SearchResults.html | 42 + .../org/thdl/roster/pages/SearchResults.page | 61 + .../org/thdl/roster/pages/forms/.DS_Store | Bin 0 -> 6148 bytes .../thdl/roster/pages/forms/ContactInfo.html | 45 + .../thdl/roster/pages/forms/ContactInfo.page | 66 + .../roster/pages/forms/ContactInfoPage.java | 70 + .../thdl/roster/pages/forms/MemberData.html | 32 + .../thdl/roster/pages/forms/MemberData.java | 265 ++ .../thdl/roster/pages/forms/MemberData.page | 92 + .../roster/pages/forms/MemberFormSeries.java | 141 + .../thdl/roster/pages/forms/Publications.html | 1 + .../thdl/roster/pages/forms/Publications.page | 51 + .../roster/pages/forms/PublicationsPage.java | 74 + .../roster/pages/forms/ResearchInterests.html | 1 + .../roster/pages/forms/ResearchInterests.page | 82 + .../pages/forms/ResearchInterestsPage.java | 308 ++ .../pages/forms/RosterValidationDelegate.java | 101 + .../roster/pages/forms/SecureRosterPage.java | 42 + .../pages/forms/SortModeStrings.properties | 1 + .../org/thdl/roster/pages/forms/Uploads.html | 1 + .../org/thdl/roster/pages/forms/Uploads.java | 329 +++ .../org/thdl/roster/pages/forms/Uploads.page | 83 + src/java/org/thdl/roster/pages/test/Test.html | 1 + src/java/org/thdl/roster/pages/test/Test.page | 61 + .../org/thdl/roster/pages/test/Test2.html | 1 + .../org/thdl/roster/pages/test/Test2.page | 12 + .../org/thdl/roster/pages/test/TestPage.java | 114 + .../org/thdl/roster/pages/test/TestPage2.java | 71 + src/java/org/thdl/roster/velocity.log | 236 ++ .../report.roster-repository.om.generation | 327 +++ src/sql/.DS_Store | Bin 0 -> 6148 bytes src/sql/countries.sql | 263 ++ src/sql/create-db.sql | 3 + src/sql/id-table-schema.sql | 16 + src/sql/report.idtable-init.sql.generation | 1 + .../report.roster-repository.sql.generation | 65 + src/sql/roster-schema-idtable-init.sql | 24 + src/sql/roster-schema.sql | 416 +++ src/sql/sqldb.map | 4 + utility.js | 47 + 331 files changed, 56413 insertions(+) create mode 100755 PaletteFunctions.js create mode 100755 PracticalBrowserSniffer.js create mode 100755 WEB-INF/.DS_Store create mode 100755 WEB-INF/lib/LICENSE-commons-beanutils.txt create mode 100755 WEB-INF/lib/LICENSE-commons-collections.txt create mode 100755 WEB-INF/lib/LICENSE-commons-fileupload.txt create mode 100755 WEB-INF/lib/LICENSE.bsf.txt create mode 100755 WEB-INF/lib/LICENSE.commons-digester.txt create mode 100755 WEB-INF/lib/LICENSE.commons-lang.txt create mode 100755 WEB-INF/lib/LICENSE.commons-logging.txt create mode 100755 WEB-INF/lib/LICENSE.jakarta-oro.txt create mode 100755 WEB-INF/lib/LICENSE.javassist.txt create mode 100755 WEB-INF/lib/LICENSE.log4j.txt create mode 100755 WEB-INF/lib/LICENSE.ognl.txt create mode 100755 WEB-INF/lib/bsf-2.3.0.jar create mode 100755 WEB-INF/lib/commons-beanutils-1.6.1.jar create mode 100755 WEB-INF/lib/commons-collections-2.1.jar create mode 100755 WEB-INF/lib/commons-configuration-1.0-dev.jar create mode 100755 WEB-INF/lib/commons-dbcp-1.0-dev-20020806.jar create mode 100755 WEB-INF/lib/commons-digester-1.5.jar create mode 100755 WEB-INF/lib/commons-fileupload-1.0.jar create mode 100755 WEB-INF/lib/commons-lang-1.0.jar create mode 100755 WEB-INF/lib/commons-logging-1.0.2.jar create mode 100755 WEB-INF/lib/commons-pool-1.0.jar create mode 100755 WEB-INF/lib/jakarta-oro-2.0.6.jar create mode 100755 WEB-INF/lib/javassist-2.5.1.jar create mode 100755 WEB-INF/lib/jdbc-2.0.jar create mode 100755 WEB-INF/lib/log4j-1.2.6.jar create mode 100755 WEB-INF/lib/mysql-driver.jar create mode 100755 WEB-INF/lib/ognl-2.5.1.jar create mode 100755 WEB-INF/lib/stratum-1.0-b3.jar create mode 100755 WEB-INF/lib/tapestry-3.0-beta-3.jar create mode 100755 WEB-INF/lib/tapestry-contrib-3.0-beta-3.jar create mode 100755 WEB-INF/lib/torque-3.0.jar create mode 100755 WEB-INF/lib/village-2.0-dev-20021111.jar create mode 100755 WEB-INF/web.xml create mode 100755 build.xml create mode 100755 images/.DS_Store create mode 100755 images/deselect_left.gif create mode 100755 images/deselect_left_off.gif create mode 100755 images/move_down.gif create mode 100755 images/move_down_off.gif create mode 100755 images/move_up.gif create mode 100755 images/move_up_off.gif create mode 100755 images/select_right.gif create mode 100755 images/select_right_off.gif create mode 100755 images/show-inspector.gif create mode 100755 images/transparent.gif create mode 100755 images/warning.gif create mode 100755 images/workbench.gif create mode 100755 roster.css create mode 100755 roster.html create mode 100755 schema/.DS_Store create mode 100755 schema/id-table-schema.xml create mode 100755 schema/roster-schema.xml create mode 100755 src/.DS_Store create mode 100755 src/java/.DS_Store create mode 100755 src/java/org/.DS_Store create mode 100755 src/java/org/thdl/.DS_Store create mode 100755 src/java/org/thdl/roster/.DS_Store create mode 100755 src/java/org/thdl/roster/EntitySelectionModel.java create mode 100755 src/java/org/thdl/roster/Global.java create mode 100755 src/java/org/thdl/roster/PaletteMergeTableProcessor.java create mode 100755 src/java/org/thdl/roster/Roster.application create mode 100755 src/java/org/thdl/roster/RosterConstants.java create mode 100755 src/java/org/thdl/roster/RosterEngine.java create mode 100755 src/java/org/thdl/roster/RosterQuery.java create mode 100755 src/java/org/thdl/roster/RosterQueryAgent.java create mode 100755 src/java/org/thdl/roster/RosterTest.java create mode 100755 src/java/org/thdl/roster/TokenMaker.java create mode 100755 src/java/org/thdl/roster/Visit.java create mode 100755 src/java/org/thdl/roster/components/.DS_Store create mode 100755 src/java/org/thdl/roster/components/AbbreviatedInsert.html create mode 100755 src/java/org/thdl/roster/components/AbbreviatedInsert.java create mode 100755 src/java/org/thdl/roster/components/AbbreviatedInsert.jwc create mode 100755 src/java/org/thdl/roster/components/AddressDisplay.html create mode 100755 src/java/org/thdl/roster/components/AddressDisplay.java create mode 100755 src/java/org/thdl/roster/components/AddressDisplay.jwc create mode 100755 src/java/org/thdl/roster/components/Border.html create mode 100755 src/java/org/thdl/roster/components/Border.java create mode 100755 src/java/org/thdl/roster/components/Border.jwc create mode 100755 src/java/org/thdl/roster/components/Century.html create mode 100755 src/java/org/thdl/roster/components/Century.java create mode 100755 src/java/org/thdl/roster/components/Century.jwc create mode 100755 src/java/org/thdl/roster/components/ConditionalInsert.html create mode 100755 src/java/org/thdl/roster/components/ConditionalInsert.java create mode 100755 src/java/org/thdl/roster/components/ConditionalInsert.jwc create mode 100755 src/java/org/thdl/roster/components/CountryDisplay.html create mode 100755 src/java/org/thdl/roster/components/CountryDisplay.java create mode 100755 src/java/org/thdl/roster/components/CountryDisplay.jwc create mode 100755 src/java/org/thdl/roster/components/CulturalAreaDisplay.html create mode 100755 src/java/org/thdl/roster/components/CulturalAreaDisplay.java create mode 100755 src/java/org/thdl/roster/components/CulturalAreaDisplay.jwc create mode 100755 src/java/org/thdl/roster/components/DateFormatter.html create mode 100755 src/java/org/thdl/roster/components/DateFormatter.java create mode 100755 src/java/org/thdl/roster/components/DateFormatter.jwc create mode 100755 src/java/org/thdl/roster/components/DisciplineDisplay.html create mode 100755 src/java/org/thdl/roster/components/DisciplineDisplay.java create mode 100755 src/java/org/thdl/roster/components/DisciplineDisplay.jwc create mode 100755 src/java/org/thdl/roster/components/DocumentDisplay.html create mode 100755 src/java/org/thdl/roster/components/DocumentDisplay.java create mode 100755 src/java/org/thdl/roster/components/DocumentDisplay.jwc create mode 100755 src/java/org/thdl/roster/components/LanguageDisplay.html create mode 100755 src/java/org/thdl/roster/components/LanguageDisplay.java create mode 100755 src/java/org/thdl/roster/components/LanguageDisplay.jwc create mode 100755 src/java/org/thdl/roster/components/MemberTypeDisplay.html create mode 100755 src/java/org/thdl/roster/components/MemberTypeDisplay.java create mode 100755 src/java/org/thdl/roster/components/MemberTypeDisplay.jwc create mode 100755 src/java/org/thdl/roster/components/OrganizationDisplay.html create mode 100755 src/java/org/thdl/roster/components/OrganizationDisplay.java create mode 100755 src/java/org/thdl/roster/components/OrganizationDisplay.jwc create mode 100755 src/java/org/thdl/roster/components/PersonDisplay.html create mode 100755 src/java/org/thdl/roster/components/PersonDisplay.java create mode 100755 src/java/org/thdl/roster/components/PersonDisplay.jwc create mode 100755 src/java/org/thdl/roster/components/PhoneDisplay.html create mode 100755 src/java/org/thdl/roster/components/PhoneDisplay.java create mode 100755 src/java/org/thdl/roster/components/PhoneDisplay.jwc create mode 100755 src/java/org/thdl/roster/components/ProjectDisplay.html create mode 100755 src/java/org/thdl/roster/components/ProjectDisplay.java create mode 100755 src/java/org/thdl/roster/components/ProjectDisplay.jwc create mode 100755 src/java/org/thdl/roster/components/forms/.DS_Store create mode 100755 src/java/org/thdl/roster/components/forms/AddressFields.html create mode 100755 src/java/org/thdl/roster/components/forms/AddressFields.java create mode 100755 src/java/org/thdl/roster/components/forms/AddressFields.jwc create mode 100755 src/java/org/thdl/roster/components/forms/OrganizationFields.html create mode 100755 src/java/org/thdl/roster/components/forms/OrganizationFields.java create mode 100755 src/java/org/thdl/roster/components/forms/OrganizationFields.jwc create mode 100755 src/java/org/thdl/roster/components/forms/PersonFields.html create mode 100755 src/java/org/thdl/roster/components/forms/PersonFields.java create mode 100755 src/java/org/thdl/roster/components/forms/PersonFields.jwc create mode 100755 src/java/org/thdl/roster/components/forms/PhoneFields.html create mode 100755 src/java/org/thdl/roster/components/forms/PhoneFields.java create mode 100755 src/java/org/thdl/roster/components/forms/PhoneFields.jwc create mode 100755 src/java/org/thdl/roster/components/forms/ProjectFields.html create mode 100755 src/java/org/thdl/roster/components/forms/ProjectFields.java create mode 100755 src/java/org/thdl/roster/components/forms/ProjectFields.jwc create mode 100755 src/java/org/thdl/roster/components/forms/WizardTabs.html create mode 100755 src/java/org/thdl/roster/components/forms/WizardTabs.java create mode 100755 src/java/org/thdl/roster/components/forms/WizardTabs.jwc create mode 100755 src/java/org/thdl/roster/om/.DS_Store create mode 100755 src/java/org/thdl/roster/om/Address.java create mode 100755 src/java/org/thdl/roster/om/AddressPeer.java create mode 100755 src/java/org/thdl/roster/om/BaseAddress.java create mode 100755 src/java/org/thdl/roster/om/BaseAddressPeer.java create mode 100755 src/java/org/thdl/roster/om/BaseContactInfo.java create mode 100755 src/java/org/thdl/roster/om/BaseContactInfoPeer.java create mode 100755 src/java/org/thdl/roster/om/BaseCountry.java create mode 100755 src/java/org/thdl/roster/om/BaseCountryPeer.java create mode 100755 src/java/org/thdl/roster/om/BaseCulturalArea.java create mode 100755 src/java/org/thdl/roster/om/BaseCulturalAreaPeer.java create mode 100755 src/java/org/thdl/roster/om/BaseDiscipline.java create mode 100755 src/java/org/thdl/roster/om/BaseDisciplinePeer.java create mode 100755 src/java/org/thdl/roster/om/BaseDocument.java create mode 100755 src/java/org/thdl/roster/om/BaseDocumentPeer.java create mode 100755 src/java/org/thdl/roster/om/BaseDocumentType.java create mode 100755 src/java/org/thdl/roster/om/BaseDocumentTypePeer.java create mode 100755 src/java/org/thdl/roster/om/BaseLanguage.java create mode 100755 src/java/org/thdl/roster/om/BaseLanguagePeer.java create mode 100755 src/java/org/thdl/roster/om/BaseMember.java create mode 100755 src/java/org/thdl/roster/om/BaseMemberPeer.java create mode 100755 src/java/org/thdl/roster/om/BaseOrganizationData.java create mode 100755 src/java/org/thdl/roster/om/BaseOrganizationDataPeer.java create mode 100755 src/java/org/thdl/roster/om/BaseOrganizationOrganizationType.java create mode 100755 src/java/org/thdl/roster/om/BaseOrganizationOrganizationTypePeer.java create mode 100755 src/java/org/thdl/roster/om/BaseOrganizationType.java create mode 100755 src/java/org/thdl/roster/om/BaseOrganizationTypePeer.java create mode 100755 src/java/org/thdl/roster/om/BasePersonData.java create mode 100755 src/java/org/thdl/roster/om/BasePersonDataPeer.java create mode 100755 src/java/org/thdl/roster/om/BasePersonPersonType.java create mode 100755 src/java/org/thdl/roster/om/BasePersonPersonTypePeer.java create mode 100755 src/java/org/thdl/roster/om/BasePersonType.java create mode 100755 src/java/org/thdl/roster/om/BasePersonTypePeer.java create mode 100755 src/java/org/thdl/roster/om/BasePhone.java create mode 100755 src/java/org/thdl/roster/om/BasePhonePeer.java create mode 100755 src/java/org/thdl/roster/om/BaseProjectData.java create mode 100755 src/java/org/thdl/roster/om/BaseProjectDataPeer.java create mode 100755 src/java/org/thdl/roster/om/BaseProjectProjectType.java create mode 100755 src/java/org/thdl/roster/om/BaseProjectProjectTypePeer.java create mode 100755 src/java/org/thdl/roster/om/BaseProjectType.java create mode 100755 src/java/org/thdl/roster/om/BaseProjectTypePeer.java create mode 100755 src/java/org/thdl/roster/om/BasePublication.java create mode 100755 src/java/org/thdl/roster/om/BasePublicationPeer.java create mode 100755 src/java/org/thdl/roster/om/BaseResearchInterest.java create mode 100755 src/java/org/thdl/roster/om/BaseResearchInterestCulturalArea.java create mode 100755 src/java/org/thdl/roster/om/BaseResearchInterestCulturalAreaPeer.java create mode 100755 src/java/org/thdl/roster/om/BaseResearchInterestDiscipline.java create mode 100755 src/java/org/thdl/roster/om/BaseResearchInterestDisciplinePeer.java create mode 100755 src/java/org/thdl/roster/om/BaseResearchInterestLanguage.java create mode 100755 src/java/org/thdl/roster/om/BaseResearchInterestLanguagePeer.java create mode 100755 src/java/org/thdl/roster/om/BaseResearchInterestPeer.java create mode 100755 src/java/org/thdl/roster/om/ContactInfo.java create mode 100755 src/java/org/thdl/roster/om/ContactInfoPeer.java create mode 100755 src/java/org/thdl/roster/om/Country.java create mode 100755 src/java/org/thdl/roster/om/CountryPeer.java create mode 100755 src/java/org/thdl/roster/om/CulturalArea.java create mode 100755 src/java/org/thdl/roster/om/CulturalAreaPeer.java create mode 100755 src/java/org/thdl/roster/om/Discipline.java create mode 100755 src/java/org/thdl/roster/om/DisciplinePeer.java create mode 100755 src/java/org/thdl/roster/om/Document.java create mode 100755 src/java/org/thdl/roster/om/DocumentPeer.java create mode 100755 src/java/org/thdl/roster/om/DocumentType.java create mode 100755 src/java/org/thdl/roster/om/DocumentTypePeer.java create mode 100755 src/java/org/thdl/roster/om/Language.java create mode 100755 src/java/org/thdl/roster/om/LanguagePeer.java create mode 100755 src/java/org/thdl/roster/om/Member.java create mode 100755 src/java/org/thdl/roster/om/MemberPeer.java create mode 100755 src/java/org/thdl/roster/om/Organization.java create mode 100755 src/java/org/thdl/roster/om/OrganizationData.java create mode 100755 src/java/org/thdl/roster/om/OrganizationDataPeer.java create mode 100755 src/java/org/thdl/roster/om/OrganizationOrganizationType.java create mode 100755 src/java/org/thdl/roster/om/OrganizationOrganizationTypePeer.java create mode 100755 src/java/org/thdl/roster/om/OrganizationType.java create mode 100755 src/java/org/thdl/roster/om/OrganizationTypePeer.java create mode 100755 src/java/org/thdl/roster/om/Person.java create mode 100755 src/java/org/thdl/roster/om/PersonData.java create mode 100755 src/java/org/thdl/roster/om/PersonDataPeer.java create mode 100755 src/java/org/thdl/roster/om/PersonPersonType.java create mode 100755 src/java/org/thdl/roster/om/PersonPersonTypePeer.java create mode 100755 src/java/org/thdl/roster/om/PersonType.java create mode 100755 src/java/org/thdl/roster/om/PersonTypePeer.java create mode 100755 src/java/org/thdl/roster/om/Phone.java create mode 100755 src/java/org/thdl/roster/om/PhonePeer.java create mode 100755 src/java/org/thdl/roster/om/Project.java create mode 100755 src/java/org/thdl/roster/om/ProjectData.java create mode 100755 src/java/org/thdl/roster/om/ProjectDataPeer.java create mode 100755 src/java/org/thdl/roster/om/ProjectProjectType.java create mode 100755 src/java/org/thdl/roster/om/ProjectProjectTypePeer.java create mode 100755 src/java/org/thdl/roster/om/ProjectType.java create mode 100755 src/java/org/thdl/roster/om/ProjectTypePeer.java create mode 100755 src/java/org/thdl/roster/om/Publication.java create mode 100755 src/java/org/thdl/roster/om/PublicationPeer.java create mode 100755 src/java/org/thdl/roster/om/ResearchInterest.java create mode 100755 src/java/org/thdl/roster/om/ResearchInterestCulturalArea.java create mode 100755 src/java/org/thdl/roster/om/ResearchInterestCulturalAreaPeer.java create mode 100755 src/java/org/thdl/roster/om/ResearchInterestDiscipline.java create mode 100755 src/java/org/thdl/roster/om/ResearchInterestDisciplinePeer.java create mode 100755 src/java/org/thdl/roster/om/ResearchInterestLanguage.java create mode 100755 src/java/org/thdl/roster/om/ResearchInterestLanguagePeer.java create mode 100755 src/java/org/thdl/roster/om/ResearchInterestPeer.java create mode 100755 src/java/org/thdl/roster/om/RosterMember.java create mode 100755 src/java/org/thdl/roster/om/RosterMemberData.java create mode 100755 src/java/org/thdl/roster/om/RosterMemberType.java create mode 100755 src/java/org/thdl/roster/om/RosterMemberTypeException.java create mode 100755 src/java/org/thdl/roster/om/RosterMergeData.java create mode 100755 src/java/org/thdl/roster/om/RosterOmException.java create mode 100755 src/java/org/thdl/roster/om/map/AddressMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/ContactInfoMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/CountryMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/CulturalAreaMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/DisciplineMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/DocumentMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/DocumentTypeMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/LanguageMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/MemberMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/OrganizationDataMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/OrganizationOrganizationTypeMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/OrganizationTypeMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/PersonDataMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/PersonPersonTypeMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/PersonTypeMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/PhoneMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/ProjectDataMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/ProjectProjectTypeMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/ProjectTypeMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/PublicationMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/ResearchInterestCulturalAreaMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/ResearchInterestDisciplineMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/ResearchInterestLanguageMapBuilder.java create mode 100755 src/java/org/thdl/roster/om/map/ResearchInterestMapBuilder.java create mode 100755 src/java/org/thdl/roster/pages/.DS_Store create mode 100755 src/java/org/thdl/roster/pages/Admin.html create mode 100755 src/java/org/thdl/roster/pages/Admin.page create mode 100755 src/java/org/thdl/roster/pages/Edit.html create mode 100755 src/java/org/thdl/roster/pages/Edit.java create mode 100755 src/java/org/thdl/roster/pages/Edit.page create mode 100755 src/java/org/thdl/roster/pages/Home.html create mode 100755 src/java/org/thdl/roster/pages/Home.java create mode 100755 src/java/org/thdl/roster/pages/Home.page create mode 100755 src/java/org/thdl/roster/pages/Login.html create mode 100755 src/java/org/thdl/roster/pages/Login.java create mode 100755 src/java/org/thdl/roster/pages/Login.page create mode 100755 src/java/org/thdl/roster/pages/Member.html create mode 100755 src/java/org/thdl/roster/pages/Member.page create mode 100755 src/java/org/thdl/roster/pages/MemberPage.java create mode 100755 src/java/org/thdl/roster/pages/Members.html create mode 100755 src/java/org/thdl/roster/pages/Members.page create mode 100755 src/java/org/thdl/roster/pages/MembersPage.java create mode 100755 src/java/org/thdl/roster/pages/RosterPage.java create mode 100755 src/java/org/thdl/roster/pages/Search.html create mode 100755 src/java/org/thdl/roster/pages/Search.java create mode 100755 src/java/org/thdl/roster/pages/Search.page create mode 100755 src/java/org/thdl/roster/pages/SearchResults.html create mode 100755 src/java/org/thdl/roster/pages/SearchResults.page create mode 100755 src/java/org/thdl/roster/pages/forms/.DS_Store create mode 100755 src/java/org/thdl/roster/pages/forms/ContactInfo.html create mode 100755 src/java/org/thdl/roster/pages/forms/ContactInfo.page create mode 100755 src/java/org/thdl/roster/pages/forms/ContactInfoPage.java create mode 100755 src/java/org/thdl/roster/pages/forms/MemberData.html create mode 100755 src/java/org/thdl/roster/pages/forms/MemberData.java create mode 100755 src/java/org/thdl/roster/pages/forms/MemberData.page create mode 100755 src/java/org/thdl/roster/pages/forms/MemberFormSeries.java create mode 100755 src/java/org/thdl/roster/pages/forms/Publications.html create mode 100755 src/java/org/thdl/roster/pages/forms/Publications.page create mode 100755 src/java/org/thdl/roster/pages/forms/PublicationsPage.java create mode 100755 src/java/org/thdl/roster/pages/forms/ResearchInterests.html create mode 100755 src/java/org/thdl/roster/pages/forms/ResearchInterests.page create mode 100755 src/java/org/thdl/roster/pages/forms/ResearchInterestsPage.java create mode 100755 src/java/org/thdl/roster/pages/forms/RosterValidationDelegate.java create mode 100755 src/java/org/thdl/roster/pages/forms/SecureRosterPage.java create mode 100755 src/java/org/thdl/roster/pages/forms/SortModeStrings.properties create mode 100755 src/java/org/thdl/roster/pages/forms/Uploads.html create mode 100755 src/java/org/thdl/roster/pages/forms/Uploads.java create mode 100755 src/java/org/thdl/roster/pages/forms/Uploads.page create mode 100755 src/java/org/thdl/roster/pages/test/Test.html create mode 100755 src/java/org/thdl/roster/pages/test/Test.page create mode 100755 src/java/org/thdl/roster/pages/test/Test2.html create mode 100755 src/java/org/thdl/roster/pages/test/Test2.page create mode 100755 src/java/org/thdl/roster/pages/test/TestPage.java create mode 100755 src/java/org/thdl/roster/pages/test/TestPage2.java create mode 100755 src/java/org/thdl/roster/velocity.log create mode 100755 src/java/report.roster-repository.om.generation create mode 100755 src/sql/.DS_Store create mode 100755 src/sql/countries.sql create mode 100755 src/sql/create-db.sql create mode 100755 src/sql/id-table-schema.sql create mode 100755 src/sql/report.idtable-init.sql.generation create mode 100755 src/sql/report.roster-repository.sql.generation create mode 100755 src/sql/roster-schema-idtable-init.sql create mode 100755 src/sql/roster-schema.sql create mode 100755 src/sql/sqldb.map create mode 100755 utility.js diff --git a/PaletteFunctions.js b/PaletteFunctions.js new file mode 100755 index 0000000..51b87c6 --- /dev/null +++ b/PaletteFunctions.js @@ -0,0 +1,178 @@ +// $Id: PaletteFunctions.js,v 1.1 2004/01/07 15:32:36 travismccauley Exp $ +// Requires: /net/sf/tapestry/html/PracticalBrowserSniffer.js + +function palette_clear_selections(element) +{ + var options = element.options; + + for (var i = 0; i < options.length; i++) + options[i].selected = false; +} + +function palette_select_all(element) +{ + var options = element.options; + + for (var i = 0; i < options.length; i++) + options[i].selected = true; +} + +function palette_sort(element, sorter) +{ + var options = element.options; + var list = new Array(); + var index = 0; + var isNavigator = (navigator.family == "nn4" || navigator.family == "gecko"); + + while (options.length > 0) + { + var option = options[0]; + + if (isNavigator) + { + // Can't transfer option in nn4, nn6 + + if (navigator.family == 'gecko') + var copy = document.createElement("OPTION"); + else + var copy = new Option(option.text, option.value); + + copy.text = option.text; + copy.value = option.value; + copy.selected = options.selected; + + list[index++] = copy; + } + else + list[index++] = option; + + + options[0] = null; + } + + list.sort(sorter); + + for (var i = 0; i < list.length; i++) + { + options[i] = list[i]; + } + + +} + +function palette_label_sorter(a, b) +{ + var a_text = a.text; + var b_text = b.text; + + if (a_text == b_text) + return 0; + + if (a_text < b.text) + return -1; + + return 1; +} + +function palette_sort_by_label(element) +{ + palette_sort(element, palette_label_sorter); +} + +function palette_value_sorter(a, b) +{ + var a_value = a.value; + var b_value = b.value; + + if (a_value == b_value) + return 0; + + if (a_value < b_value) + return -1; + + return 1; +} + +function palette_sort_by_value(element) +{ + palette_sort(element, palette_value_sorter); +} + +function palette_transfer_selections(source, target) +{ + var sourceOptions = source.options; + var targetOptions = target.options; + + var targetIndex = target.selectedIndex; + var offset = 0; + + palette_clear_selections(target); + + for (var i = 0; i < sourceOptions.length; i++) + { + var option = sourceOptions[i]; + + if (option.selected) + { + + if (navigator.family == 'nn4' || navigator.family == 'gecko') + { + // Can't share options between selects in NN4 + + var newOption = new Option(option.text, option.value, false, true); + + sourceOptions[i] = null; + + // Always added to end in NN4 + + targetOptions[targetOptions.length] = newOption; + } + else + { + sourceOptions.remove(i); + + if (targetIndex < 0) + targetOptions.add(option); + else + targetOptions.add(option, targetIndex + offset++); + } + + i--; + } + } + +} + +function palette_swap_options(options, selectedIndex, targetIndex) +{ + var option = options[selectedIndex]; + + // It's very hard to reorder options in NN4 + + if (navigator.family == 'nn4' || navigator.family == 'gecko') + { + var swap = options[targetIndex]; + + var hold = swap.text; + swap.text = option.text; + option.text = hold; + + hold = swap.value; + swap.value = option.value; + option.value = hold; + + hold = swap.selected; + swap.selected = option.selected; + option.selected = hold; + + // defaultSelected isn't relevant to the Palette + + return; + } + + // Sensible browsers ... + + options.remove(selectedIndex); + options.add(option, targetIndex); +} + diff --git a/PracticalBrowserSniffer.js b/PracticalBrowserSniffer.js new file mode 100755 index 0000000..e1a89e0 --- /dev/null +++ b/PracticalBrowserSniffer.js @@ -0,0 +1,160 @@ +// PracticalBrowserSniffer.js - Detect Browser +// Requires JavaScript 1.1 +/* +The contents of this file are subject to the Netscape Public +License Version 1.1 (the "License"); you may not use this file +except in compliance with the License. You may obtain a copy of +the License at http://www.mozilla.org/NPL/ + +Software distributed under the License is distributed on an "AS +IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +implied. See the License for the specific language governing +rights and limitations under the License. + +The Initial Developer of the Original Code is Bob Clary. + +Contributor(s): Bob Clary, Original Work, Copyright 1999-2000 + Bob Clary, Netscape Communications, Copyright 2001 + + +Note: + +Acquired from: http://developer.netscape.com/evangelism/tools/practical-browser-sniffing/ +Last update: July 17, 2001 + +*/ + +// work around bug in xpcdom Mozilla 0.9.1 +window.saveNavigator = window.navigator; + +// Handy functions +function noop() {} +function noerror() { return true; } + +function defaultOnError(msg, url, line) +{ + // customize this for your site + if (top.location.href.indexOf('_files/errors/') == -1) + top.location = '/evangelism/xbProjects/_files/errors/index.html?msg=' + escape(msg) + '&url=' + escape(url) + '&line=' + escape(line); +} + +// Display Error page... +// XXX: more work to be done here +// +function reportError(message) +{ + // customize this for your site + if (top.location.href.indexOf('_files/errors/') == -1) + top.location = '/evangelism/xbProjects/_files/errors/index.html?msg=' + escape(message); +} + +function pageRequires(cond, msg, redirectTo) +{ + if (!cond) + { + msg = 'This page requires ' + msg; + top.location = redirectTo + '?msg=' + escape(msg); + } + // return cond so can use in onclick handlers to exclude browsers + // from pages they do not support. + return cond; +} + +function detectBrowser() +{ + var oldOnError = window.onerror; + var element = null; + + window.onerror = defaultOnError; + + navigator.OS = ''; + navigator.version = 0; + navigator.org = ''; + navigator.family = ''; + + var platform; + if (typeof(window.navigator.platform) != 'undefined') + { + platform = window.navigator.platform.toLowerCase(); + if (platform.indexOf('win') != -1) + navigator.OS = 'win'; + else if (platform.indexOf('mac') != -1) + navigator.OS = 'mac'; + else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1) + navigator.OS = 'nix'; + } + + var i = 0; + var ua = window.navigator.userAgent.toLowerCase(); + + if (ua.indexOf('opera') != -1) + { + i = ua.indexOf('opera'); + navigator.family = 'opera'; + navigator.org = 'opera'; + navigator.version = parseFloat('0' + ua.substr(i+6), 10); + } + else if ((i = ua.indexOf('msie')) != -1) + { + navigator.org = 'microsoft'; + navigator.version = parseFloat('0' + ua.substr(i+5), 10); + + if (navigator.version < 4) + navigator.family = 'ie3'; + else + navigator.family = 'ie4' + } + else if (typeof(window.controllers) != 'undefined' && typeof(window.locationbar) != 'undefined') + { + i = ua.lastIndexOf('/') + navigator.version = parseFloat('0' + ua.substr(i+1), 10); + navigator.family = 'gecko'; + + if (ua.indexOf('netscape') != -1) + navigator.org = 'netscape'; + else if (ua.indexOf('compuserve') != -1) + navigator.org = 'compuserve'; + else + navigator.org = 'mozilla'; + } + else if ((ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('hotjava')==-1)) + { + var is_major = parseFloat(navigator.appVersion); + + if (is_major < 4) + navigator.version = is_major; + else + { + i = ua.lastIndexOf('/') + navigator.version = parseFloat('0' + ua.substr(i+1), 10); + } + navigator.org = 'netscape'; + navigator.family = 'nn' + parseInt(navigator.appVersion); + } + else if ((i = ua.indexOf('aol')) != -1 ) + { + // aol + navigator.family = 'aol'; + navigator.org = 'aol'; + navigator.version = parseFloat('0' + ua.substr(i+4), 10); + } + + navigator.DOMCORE1 = (typeof(document.getElementsByTagName) != 'undefined' && typeof(document.createElement) != 'undefined'); + navigator.DOMCORE2 = (navigator.DOMCORE1 && typeof(document.getElementById) != 'undefined' && typeof(document.createElementNS) != 'undefined'); + navigator.DOMHTML = (navigator.DOMCORE1 && typeof(document.getElementById) != 'undefined'); + navigator.DOMCSS1 = ( (navigator.family == 'gecko') || (navigator.family == 'ie4') ); + + navigator.DOMCSS2 = false; + if (navigator.DOMCORE1) + { + element = document.createElement('p'); + navigator.DOMCSS2 = (typeof(element.style) == 'object'); + } + + navigator.DOMEVENTS = (typeof(document.createEvent) != 'undefined'); + + window.onerror = oldOnError; +} + +detectBrowser(); + diff --git a/WEB-INF/.DS_Store b/WEB-INF/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..d243e2364f98e8bc5c139d84e9990a2e7ed1107e GIT binary patch literal 6148 zcmeHKOG*Pl5PfAL2Ha%n&OU+Q4TcaG?gTHOGjSob%wh<-9LR-p1AWz188T*8E<~g% zbieBQb#L{U`9#=W`hL#TT$A|dLhsTSQ*;zl8a7bkseJ~IV zj2W2OaH;429se?ukNj~;jDmq+;GZ!d^Y!C;#gFo{_2l#PtW9iBY$_Vpt3shZx&&~b g`^Z&snm?(|xXQ6N)GBH(>BP7Q6hfj427ZBoFIdq%q5uE@ literal 0 HcmV?d00001 diff --git a/WEB-INF/lib/LICENSE-commons-beanutils.txt b/WEB-INF/lib/LICENSE-commons-beanutils.txt new file mode 100755 index 0000000..55e6954 --- /dev/null +++ b/WEB-INF/lib/LICENSE-commons-beanutils.txt @@ -0,0 +1,60 @@ +/* + * $Header: /tmp/thdltools/Roster/WEB-INF/lib/LICENSE-commons-beanutils.txt,v 1.1 2004/01/07 15:32:47 travismccauley Exp $ + * $Revision: 1.1 $ + * $Date: 2004/01/07 15:32:47 $ + * + * ==================================================================== + * + * The Apache Software License, Version 1.1 + * + * Copyright (c) 1999-2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Commons", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + * + */ diff --git a/WEB-INF/lib/LICENSE-commons-collections.txt b/WEB-INF/lib/LICENSE-commons-collections.txt new file mode 100755 index 0000000..7b278d7 --- /dev/null +++ b/WEB-INF/lib/LICENSE-commons-collections.txt @@ -0,0 +1,60 @@ +/* + * $Header: /tmp/thdltools/Roster/WEB-INF/lib/LICENSE-commons-collections.txt,v 1.1 2004/01/07 15:32:47 travismccauley Exp $ + * $Revision: 1.1 $ + * $Date: 2004/01/07 15:32:47 $ + * + * ==================================================================== + * + * The Apache Software License, Version 1.1 + * + * Copyright (c) 1999-2001 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Commons", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + * + */ diff --git a/WEB-INF/lib/LICENSE-commons-fileupload.txt b/WEB-INF/lib/LICENSE-commons-fileupload.txt new file mode 100755 index 0000000..30756fb --- /dev/null +++ b/WEB-INF/lib/LICENSE-commons-fileupload.txt @@ -0,0 +1,60 @@ +/* + * $Header: /tmp/thdltools/Roster/WEB-INF/lib/LICENSE-commons-fileupload.txt,v 1.1 2004/01/07 15:32:47 travismccauley Exp $ + * $Revision: 1.1 $ + * $Date: 2004/01/07 15:32:47 $ + * + * ==================================================================== + * + * The Apache Software License, Version 1.1 + * + * Copyright (c) 1999-2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Commons", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + * + */ diff --git a/WEB-INF/lib/LICENSE.bsf.txt b/WEB-INF/lib/LICENSE.bsf.txt new file mode 100755 index 0000000..77ef125 --- /dev/null +++ b/WEB-INF/lib/LICENSE.bsf.txt @@ -0,0 +1,53 @@ + The Apache Software License, Version 1.1 + + Copyright (c) 2002 The Apache Software Foundation. All rights + reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. The end-user documentation included with the redistribution, + if any, must include the following acknowledgment: + "This product includes software developed by the + Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowledgment may appear in the software itself, + if and wherever such third-party acknowledgments normally appear. + + 4. The names "BSF", "Apache", and "Apache Software Foundation" must + not be used to endorse or promote products derived from this + software without prior written permission. For written + permission, please contact apache@apache.org. + + 5. Products derived from this software may not be called "Apache", + nor may "Apache" appear in their name, without prior written + permission of the Apache Software Foundation. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + + This software consists of voluntary contributions made by many individuals + on behalf of the Apache Software Foundation and was originally created by + Sanjiva Weerawarana and others at International Business Machines + Corporation. For more information on the Apache Software Foundation, + please see . + + diff --git a/WEB-INF/lib/LICENSE.commons-digester.txt b/WEB-INF/lib/LICENSE.commons-digester.txt new file mode 100755 index 0000000..4b5ec97 --- /dev/null +++ b/WEB-INF/lib/LICENSE.commons-digester.txt @@ -0,0 +1,60 @@ +/* + * $Header: /tmp/thdltools/Roster/WEB-INF/lib/LICENSE.commons-digester.txt,v 1.1 2004/01/07 15:32:47 travismccauley Exp $ + * $Revision: 1.1 $ + * $Date: 2004/01/07 15:32:47 $ + * + * ==================================================================== + * + * The Apache Software License, Version 1.1 + * + * Copyright (c) 1999-2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Commons", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + * + */ diff --git a/WEB-INF/lib/LICENSE.commons-lang.txt b/WEB-INF/lib/LICENSE.commons-lang.txt new file mode 100755 index 0000000..2a15904 --- /dev/null +++ b/WEB-INF/lib/LICENSE.commons-lang.txt @@ -0,0 +1,60 @@ +/* + * $Header: /tmp/thdltools/Roster/WEB-INF/lib/LICENSE.commons-lang.txt,v 1.1 2004/01/07 15:32:47 travismccauley Exp $ + * $Revision: 1.1 $ + * $Date: 2004/01/07 15:32:47 $ + * + * ==================================================================== + * + * The Apache Software License, Version 1.1 + * + * Copyright (c) 1999-2001 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Commons", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + * + */ \ No newline at end of file diff --git a/WEB-INF/lib/LICENSE.commons-logging.txt b/WEB-INF/lib/LICENSE.commons-logging.txt new file mode 100755 index 0000000..6c5080c --- /dev/null +++ b/WEB-INF/lib/LICENSE.commons-logging.txt @@ -0,0 +1,60 @@ +/* + * $Header: /tmp/thdltools/Roster/WEB-INF/lib/LICENSE.commons-logging.txt,v 1.1 2004/01/07 15:32:47 travismccauley Exp $ + * $Revision: 1.1 $ + * $Date: 2004/01/07 15:32:47 $ + * + * ==================================================================== + * + * The Apache Software License, Version 1.1 + * + * Copyright (c) 1999-2001 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Commons", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + * + */ \ No newline at end of file diff --git a/WEB-INF/lib/LICENSE.jakarta-oro.txt b/WEB-INF/lib/LICENSE.jakarta-oro.txt new file mode 100755 index 0000000..9c63560 --- /dev/null +++ b/WEB-INF/lib/LICENSE.jakarta-oro.txt @@ -0,0 +1,56 @@ +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2000-2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation", "Jakarta-Oro" + * must not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * or "Jakarta-Oro", nor may "Apache" or "Jakarta-Oro" appear in their + * name, without prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + * + * Portions of this software are based upon software originally written + * by Daniel F. Savarese. We appreciate his contributions. + */ diff --git a/WEB-INF/lib/LICENSE.javassist.txt b/WEB-INF/lib/LICENSE.javassist.txt new file mode 100755 index 0000000..cb19a04 --- /dev/null +++ b/WEB-INF/lib/LICENSE.javassist.txt @@ -0,0 +1,478 @@ +MOZILLA PUBLIC LICENSE Version 1.1 + +-------------------------------------------------------------------------------- + +1. Definitions. + +1.0.1. "Commercial Use" means distribution or otherwise making the +Covered Code available to a third party. + +1.1. ''Contributor'' means each entity that creates or contributes to +the creation of Modifications. + +1.2. ''Contributor Version'' means the combination of the Original +Code, prior Modifications used by a Contributor, and the Modifications +made by that particular Contributor. + +1.3. ''Covered Code'' means the Original Code or Modifications or the +combination of the Original Code and Modifications, in each case +including portions thereof. + +1.4. ''Electronic Distribution Mechanism'' means a mechanism generally +accepted in the software development community for the electronic +transfer of data. + +1.5. ''Executable'' means Covered Code in any form other than Source +Code. + +1.6. ''Initial Developer'' means the individual or entity identified +as the Initial Developer in the Source Code notice required by Exhibit +A. + +1.7. ''Larger Work'' means a work which combines Covered Code or +portions thereof with code not governed by the terms of this License. + +1.8. ''License'' means this document. + +1.8.1. "Licensable" means having the right to grant, to the maximum +extent possible, whether at the time of the initial grant or +subsequently acquired, any and all of the rights conveyed herein. + +1.9. ''Modifications'' means any addition to or deletion from the +substance or structure of either the Original Code or any previous +Modifications. When Covered Code is released as a series of files, a +Modification is: + +A. Any addition to or deletion from the contents of a file containing +Original Code or previous Modifications. + +B. Any new file that contains any part of the Original Code or +previous Modifications. + + +1.10. ''Original Code'' means Source Code of computer software code +which is described in the Source Code notice required by Exhibit A as +Original Code, and which, at the time of its release under this +License is not already Covered Code governed by this License. + +1.10.1. "Patent Claims" means any patent claim(s), now owned or +hereafter acquired, including without limitation, method, process, and +apparatus claims, in any patent Licensable by grantor. + +1.11. ''Source Code'' means the preferred form of the Covered Code for +making modifications to it, including all modules it contains, plus +any associated interface definition files, scripts used to control +compilation and installation of an Executable, or source code +differential comparisons against either the Original Code or another +well known, available Covered Code of the Contributor's choice. The +Source Code can be in a compressed or archival form, provided the +appropriate decompression or de-archiving software is widely available +for no charge. + +1.12. "You'' (or "Your") means an individual or a legal entity +exercising rights under, and complying with all of the terms of, this +License or a future version of this License issued under Section +6.1. For legal entities, "You'' includes any entity which controls, is +controlled by, or is under common control with You. For purposes of +this definition, "control'' means (a) the power, direct or indirect, +to cause the direction or management of such entity, whether by +contract or otherwise, or (b) ownership of more than fifty percent +(50%) of the outstanding shares or beneficial ownership of such +entity. + +2. Source Code License. 1. The Initial Developer Grant. The Initial +Developer hereby grants You a world-wide, royalty-free, +non-exclusive license, subject to third party intellectual property +claims: (a) under intellectual property rights (other than patent or +trademark) Licensable by Initial Developer to use, reproduce, +modify, display, perform, sublicense and distribute the Original +Code (or portions thereof) with or without Modifications, and/or as +part of a Larger Work; and (b) under Patents Claims infringed by the +making, using or selling of Original Code, to make, have made, use, +practice, sell, and offer for sale, and/or otherwise dispose of the +Original Code (or portions thereof). + +(c) the licenses granted in this Section 2.1(a) and (b) are effective +on the date Initial Developer first distributes Original Code under +the terms of this License. + +(d) Notwithstanding Section 2.1(b) above, no patent license is granted: +1) for code that You delete from the Original Code; +2) separate from the Original Code; or +3) for infringements caused by: i) the modification of the Original Code +or ii) the combination of the Original Code with other software or +devices. + + +2.2. Contributor Grant. Subject to third party intellectual property +claims, each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license + +(a) under intellectual property rights (other than patent or +trademark) Licensable by Contributor, to use, reproduce, modify, +display, perform, sublicense and distribute the Modifications created +by such Contributor (or portions thereof) either on an unmodified +basis, with other Modifications, as Covered Code and/or as part of a +Larger Work; and + +(b) under Patent Claims infringed by the making, using, or selling of +Modifications made by that Contributor either alone and/or in +combination with its Contributor Version (or portions of such +combination), to make, use, sell, offer for sale, have made, and/or +otherwise dispose of: 1) Modifications made by that Contributor (or +portions thereof); and 2) the combination of Modifications made by +that Contributor with its Contributor Version (or portions of such +combination). + +(c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective +on the date Contributor first makes Commercial Use of the Covered +Code. + +(d) Notwithstanding Section 2.2(b) above, no patent license is +granted: 1) for any code that Contributor has deleted from the +Contributor Version; 2) separate from the Contributor Version; 3) for +infringements caused by: i) third party modifications of Contributor +Version or ii) the combination of Modifications made by that +Contributor with other software (except as part of the Contributor +Version) or other devices; or 4) under Patent Claims infringed by +Covered Code in the absence of Modifications made by that Contributor. + + +3. Distribution Obligations. + +3.1. Application of License. + +The Modifications which You create or to which You contribute are +governed by the terms of this License, including without limitation +Section 2.2. The Source Code version of Covered Code may be +distributed only under the terms of this License or a future version +of this License released under Section 6.1, and You must include a +copy of this License with every copy of the Source Code You +distribute. You may not offer or impose any terms on any Source Code +version that alters or restricts the applicable version of this +License or the recipients' rights hereunder. However, You may include +an additional document offering the additional rights described in +Section 3.5. + +3.2. Availability of Source Code. + +Any Modification which You create or to which You contribute must be +made available in Source Code form under the terms of this License +either on the same media as an Executable version or via an accepted +Electronic Distribution Mechanism to anyone to whom you made an +Executable version available; and if made available via Electronic +Distribution Mechanism, must remain available for at least twelve (12) +months after the date it initially became available, or at least six +(6) months after a subsequent version of that particular Modification +has been made available to such recipients. You are responsible for +ensuring that the Source Code version remains available even if the +Electronic Distribution Mechanism is maintained by a third party. + +3.3. Description of Modifications. + +You must cause all Covered Code to which You contribute to contain a +file documenting the changes You made to create that Covered Code and +the date of any change. You must include a prominent statement that +the Modification is derived, directly or indirectly, from Original +Code provided by the Initial Developer and including the name of the +Initial Developer in (a) the Source Code, and (b) in any notice in an +Executable version or related documentation in which You describe the +origin or ownership of the Covered Code. + +3.4. Intellectual Property Matters + +(a) Third Party Claims. + +If Contributor has knowledge that a license under a third party's +intellectual property rights is required to exercise the rights +granted by such Contributor under Sections 2.1 or 2.2, Contributor +must include a text file with the Source Code distribution titled +"LEGAL'' which describes the claim and the party making the claim in +sufficient detail that a recipient will know whom to contact. If +Contributor obtains such knowledge after the Modification is made +available as described in Section 3.2, Contributor shall promptly +modify the LEGAL file in all copies Contributor makes available +thereafter and shall take other steps (such as notifying appropriate +mailing lists or newsgroups) reasonably calculated to inform those who +received the Covered Code that new knowledge has been obtained. + +(b) Contributor APIs. + +If Contributor's Modifications include an application programming +interface and Contributor has knowledge of patent licenses which are +reasonably necessary to implement that API, Contributor must also +include this information in the LEGAL file. + + +(c) Representations. + +Contributor represents that, except as disclosed pursuant to Section +3.4(a) above, Contributor believes that Contributor's Modifications +are Contributor's original creation(s) and/or Contributor has +sufficient rights to grant the rights conveyed by this License. + +3.5. Required Notices. + +You must duplicate the notice in Exhibit A in each file of the Source +Code. If it is not possible to put such notice in a particular Source +Code file due to its structure, then You must include such notice in a +location (such as a relevant directory) where a user would be likely +to look for such a notice. If You created one or more Modification(s) +You may add your name as a Contributor to the notice described in +Exhibit A. You must also duplicate this License in any documentation +for the Source Code where You describe recipients' rights or ownership +rights relating to Covered Code. You may choose to offer, and to +charge a fee for, warranty, support, indemnity or liability +obligations to one or more recipients of Covered Code. However, You +may do so only on Your own behalf, and not on behalf of the Initial +Developer or any Contributor. You must make it absolutely clear than +any such warranty, support, indemnity or liability obligation is +offered by You alone, and You hereby agree to indemnify the Initial +Developer and every Contributor for any liability incurred by the +Initial Developer or such Contributor as a result of warranty, +support, indemnity or liability terms You offer. + +3.6. Distribution of Executable Versions. + +You may distribute Covered Code in Executable form only if the +requirements of Section 3.1-3.5 have been met for that Covered Code, +and if You include a notice stating that the Source Code version of +the Covered Code is available under the terms of this License, +including a description of how and where You have fulfilled the +obligations of Section 3.2. The notice must be conspicuously included +in any notice in an Executable version, related documentation or +collateral in which You describe recipients' rights relating to the +Covered Code. You may distribute the Executable version of Covered +Code or ownership rights under a license of Your choice, which may +contain terms different from this License, provided that You are in +compliance with the terms of this License and that the license for the +Executable version does not attempt to limit or alter the recipient's +rights in the Source Code version from the rights set forth in this +License. If You distribute the Executable version under a different +license You must make it absolutely clear that any terms which differ +from this License are offered by You alone, not by the Initial +Developer or any Contributor. You hereby agree to indemnify the +Initial Developer and every Contributor for any liability incurred by +the Initial Developer or such Contributor as a result of any such +terms You offer. + +3.7. Larger Works. + +You may create a Larger Work by combining Covered Code with other code +not governed by the terms of this License and distribute the Larger +Work as a single product. In such a case, You must make sure the +requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Code due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description +must be included in the LEGAL file described in Section 3.4 and must +be included with all distributions of the Source Code. Except to the +extent prohibited by statute or regulation, such description must be +sufficiently detailed for a recipient of ordinary skill to be able to +understand it. + +5. Application of this License. + +This License applies to code to which the Initial Developer has +attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + +6.1. New Versions. + +Netscape Communications Corporation (''Netscape'') may publish revised +and/or new versions of the License from time to time. Each version +will be given a distinguishing version number. + +6.2. Effect of New Versions. + +Once Covered Code has been published under a particular version of the +License, You may always continue to use it under the terms of that +version. You may also choose to use such Covered Code under the terms +of any subsequent version of the License published by Netscape. No one +other than Netscape has the right to modify the terms applicable to +Covered Code created under this License. + +6.3. Derivative Works. + +If You create or use a modified version of this License (which you may +only do in order to apply it to code which is not already Covered Code +governed by this License), You must (a) rename Your license so that +the phrases ''Mozilla'', ''MOZILLAPL'', ''MOZPL'', ''Netscape'', +"MPL", ''NPL'' or any confusingly similar phrase do not appear in your +license (except to note that your license differs from this License) +and (b) otherwise make it clear that Your version of the license +contains terms which differ from the Mozilla Public License and +Netscape Public License. (Filling in the name of the Initial +Developer, Original Code or Contributor in the notice described in +Exhibit A shall not of themselves be deemed to be modifications of +this License.) + +7. DISCLAIMER OF WARRANTY. + +COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS'' BASIS, +WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, +WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF +DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR +NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF +THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE +IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER +CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR +CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART +OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER +EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + +8.1. This License and the rights granted hereunder will terminate +automatically if You fail to comply with terms herein and fail to cure +such breach within 30 days of becoming aware of the breach. All +sublicenses to the Covered Code which are properly granted shall +survive any termination of this License. Provisions which, by their +nature, must remain in effect beyond the termination of this License +shall survive. + +8.2. If You initiate litigation by asserting a patent infringement +claim (excluding declatory judgment actions) against Initial Developer +or a Contributor (the Initial Developer or Contributor against whom +You file such action is referred to as "Participant") alleging that: + +(a) such Participant's Contributor Version directly or indirectly +infringes any patent, then any and all rights granted by such +Participant to You under Sections 2.1 and/or 2.2 of this License +shall, upon 60 days notice from Participant terminate prospectively, +unless if within 60 days after receipt of notice You either: (i) agree +in writing to pay Participant a mutually agreeable reasonable royalty +for Your past and future use of Modifications made by such +Participant, or (ii) withdraw Your litigation claim with respect to +the Contributor Version against such Participant. If within 60 days +of notice, a reasonable royalty and payment arrangement are not +mutually agreed upon in writing by the parties or the litigation claim +is not withdrawn, the rights granted by Participant to You under +Sections 2.1 and/or 2.2 automatically terminate at the expiration of +the 60 day notice period specified above. + +(b) any software, hardware, or device, other than such Participant's +Contributor Version, directly or indirectly infringes any patent, then +any rights granted to You by such Participant under Sections 2.1(b) +and 2.2(b) are revoked effective as of the date You first made, used, +sold, distributed, or had made, Modifications made by that +Participant. + +8.3. If You assert a patent infringement claim against Participant +alleging that such Participant's Contributor Version directly or +indirectly infringes any patent where such claim is resolved (such as +by license or settlement) prior to the initiation of patent +infringement litigation, then the reasonable value of the licenses +granted by such Participant under Sections 2.1 or 2.2 shall be taken +into account in determining the amount or value of any payment or +license. + +8.4. In the event of termination under Sections 8.1 or 8.2 above, all +end user license agreements (excluding distributors and resellers) +which have been validly granted by You or any distributor hereunder +prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + +UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT +(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL +DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, +OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR +ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY +CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, +WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER +COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN +INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF +LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY +RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW +PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE +EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO +THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + +The Covered Code is a ''commercial item,'' as that term is defined in +48 C.F.R. 2.101 (Oct. 1995), consisting of ''commercial computer +software'' and ''commercial computer software documentation,'' as such +terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 +C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), +all U.S. Government End Users acquire Covered Code with only those +rights set forth herein. + +11. MISCELLANEOUS. + +This License represents the complete agreement concerning subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. This License shall be governed by +California law provisions (except to the extent applicable law, if +any, provides otherwise), excluding its conflict-of-law +provisions. With respect to disputes in which at least one party is a +citizen of, or an entity chartered or registered to do business in the +United States of America, any litigation relating to this License +shall be subject to the jurisdiction of the Federal Courts of the +Northern District of California, with venue lying in Santa Clara +County, California, with the losing party responsible for costs, +including without limitation, court costs and reasonable attorneys' +fees and expenses. The application of the United Nations Convention on +Contracts for the International Sale of Goods is expressly +excluded. Any law or regulation which provides that the language of a +contract shall be construed against the drafter shall not apply to +this License. + +12. RESPONSIBILITY FOR CLAIMS. + +As between Initial Developer and the Contributors, each party is +responsible for claims and damages arising, directly or indirectly, +out of its utilization of rights under this License and You agree to +work with Initial Developer and Contributors to distribute such +responsibility on an equitable basis. Nothing herein is intended or +shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + +Initial Developer may designate portions of the Covered Code as +.Multiple-Licensed.. .Multiple-Licensed. means that the Initial +Developer permits you to utilize portions of the Covered Code under +Your choice of the MPL or the alternative licenses, if any, specified +by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + +The contents of this file are subject to the Mozilla Public License +Version 1.1 (the "License"); you may not use this file except in +compliance with the License. You may obtain a copy of the License at + +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" +basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +the License for the specific language governing rights and limitations +under the License. + +The Original Code is Javassist. + +The Initial Developer of the Original Code is Shigeru Chiba. Portions +created by the Initial Developer are + + Copyright (C) 1999-2003 Shigeru Chiba. All Rights Reserved. + +Contributor(s): ______________________________________. + +Alternatively, the contents of this file may be used under the terms +of the GNU Lesser General Public License Version 2.1 or later (the +"LGPL"), in which case the provisions of the LGPL are applicable +instead of those above. If you wish to allow use of your version of +this file only under the terms of the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate +your decision by deleting the provisions above and replace them with +the notice and other provisions required by the LGPL. If you do not +delete the provisions above, a recipient may use your version of this +file under the terms of either the MPL or the LGPL. + diff --git a/WEB-INF/lib/LICENSE.log4j.txt b/WEB-INF/lib/LICENSE.log4j.txt new file mode 100755 index 0000000..007db57 --- /dev/null +++ b/WEB-INF/lib/LICENSE.log4j.txt @@ -0,0 +1,48 @@ +/* + * ============================================================================ + * The Apache Software License, Version 1.1 + * ============================================================================ + * + * Copyright (C) 1999 The Apache Software Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modifica- + * tion, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The end-user documentation included with the redistribution, if any, must + * include the following acknowledgment: "This product includes software + * developed by the Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, if + * and wherever such third-party acknowledgments normally appear. + * + * 4. The names "log4j" and "Apache Software Foundation" must not be used to + * endorse or promote products derived from this software without prior + * written permission. For written permission, please contact + * apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", nor may + * "Apache" appear in their name, without prior written permission of the + * Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- + * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This software consists of voluntary contributions made by many individuals + * on behalf of the Apache Software Foundation. For more information on the + * Apache Software Foundation, please see . + * + */ diff --git a/WEB-INF/lib/LICENSE.ognl.txt b/WEB-INF/lib/LICENSE.ognl.txt new file mode 100755 index 0000000..4b1db54 --- /dev/null +++ b/WEB-INF/lib/LICENSE.ognl.txt @@ -0,0 +1,103 @@ + + This directory contains an example ANTLR grammar for a little +language called OGNL (pronounced OGG-null), which stands for +Object-Graph Navigation Language. OGNL is an expression language for +setting and getting properties of Java objects, and can be used as is +or as a starting point for other projects. + +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +* * +* Copyright (c) 2002, Drew Davidson and Luke Blanshard * +* All rights reserved. * +* * +* Redistribution and use in source and binary forms, with or without * +* modification, are permitted provided that the following conditions are * +* met: * +* * +* Redistributions of source code must retain the above copyright notice, * +* this list of conditions and the following disclaimer. * +* Redistributions in binary form must reproduce the above copyright * +* notice, this list of conditions and the following disclaimer in the * +* documentation and/or other materials provided with the distribution. * +* Neither the name of the Drew Davidson nor the names of its contributors * +* may be used to endorse or promote products derived from this software * +* without specific prior written permission. * +* * +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * +* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * +* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF * +* THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * +* DAMAGE. * +* * +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + + +1. Overview +=========== + + As a tool and a code base, OGNL can be used as is or can be +cannibalized for its parts. Its possible uses and features include: + + * OGNL was first conceived as a mechanism for associating parts of + GUIs with model objects. A single expression is used both to pull + the appropriate value from the model for display by a widget, and + to push the newly edited value back into the model when editing is + complete. + + * OGNL's current syntax includes most of Java's operators and a few + of its own. It is probably close to powerful enough to be used by + a debugger or other system that requires run-time interpretation + of expressions. + + * OGNL has fully integrated support for arbitrary-precision math, as + embodied by the classes of the java.math package, meaning that + OGNL's arithmetic operators work on BigIntegers and BigDecimals as + well as the primitive types. While this is of marginal use (at + best) to OGNL as a GUI hooker-upper, it could be valuable in other + settings. + + +2. Building +=========== + + OGNL was designed for JDK 1.2 (now known as Java 2). It is possible +to modify the code to run under 1.1, though the extensive use of the +1.2 collections API makes this a bit painful. If you have the JDK 1.1 +version of the 1.2 collections, which was made available in the summer +of 1998 by the InfoBus group at Sun (and still available in June 1999 +at http://java.sun.com/beans/infobus), the job will be easier. + + If you have GNU make, the GNUmakefile provided will build the OGNL +package, run the test program, and use javadoc to produce API +documentation; all on NT, Win98 or Unix systems. Please see that +file for more information on what build targets are available. + + +3. Documentation +================ + + OGNL is documented in the accompanying file "package.html", which is +used by javadoc as the ognl package description. The best way to view +this is to generate javadoc (using "make doc" if you have GNU make), +and then open the generated file "index.html" in the javadoc-created +"doc" subdirectory, using your favorite HTML browser. The package +description will be below the lists of interfaces and classes. + + The accompanying test program, Test.java, can be thought of as +"practical documentation." + + +4. Feedback +=========== + + If you have any observations or complaints about OGNL or its +implementation or documentation, we would like to hear from you. You +can reach Luke Blanshard by email at luke@quiq.com, or Drew Davidson at +drew@ognl.org. diff --git a/WEB-INF/lib/bsf-2.3.0.jar b/WEB-INF/lib/bsf-2.3.0.jar new file mode 100755 index 0000000000000000000000000000000000000000..caa4dea7097de87267ee32f6e02dfc3d61b791a4 GIT binary patch literal 175348 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 iDFf0OK9>; zwk(SwfxCcvc(^{}x`HAJG(DpsGn0Xw%bZs~Jw zW7?8)aOS%6r(W!)6=FN8%OPA!f@gf?!_%EF zDuUR#5XFsz9bd>tc`oWcB6*w`ec2EK3U~>-cOfEqZ-{kbHW?`J5;vhJGU7HVDB7v} zrsX|^LMp`VBty33J)}Y^B+kQ7*P=F4<+(~iZ3s}E2as_$FuK!r-&MD;EWbWEsxs%4 z*Q!G*`P9+kY(a@!rWLEcR5g1bNykrq06UBaj7$14{nwIM}xEiVqNlD4=gk{Ca0kjd#xN%iw9@e;a~PiF;F zev6m~V~AbLOz7^xu8WI#ev|l-s#;7UrD#{y3n|soqyzn~tUh#dem5j2Ejj2&>br!F zPHeNW@GiX=0kWhhW?(YIAx;Ewk^JK+GsEx+j<+F-DiUmXC-pIq4wtc2IaagcCv3LV zYs^+uDwbxZYE5}fRcP6MjYPn`(}@8F&j}EG$N|1DsQg5CtW8Wa3DPlxYF-~_W zOi5a%OhGkWnxqcZJDD1SNigbsHYTmag#*pYA?J6I8t*N9a8x8(>vzVj4B4^lWL9{RkKvs>%)hd zH=~oNw-m@_TLkwaVrA%RkUB`gIvSuZHAijiJqvl2Se&632#$;S) zT;ZHiu(dPtb>Fz-c?won^IHHR*h4 zRD#j4+Kq$e`|t+|>_yZ3gx!Zm+93;;z?^QPgi^GEbCWj$QI(Y9iCpXrY;@kcM4-Ea zZ%~d;E=Ro@0uy)}Mx~b$aQDg82m`z9xeb?Es+6@Cds7O1EA#GrPwzlITC}&+b{WwN z$>w~igK&hy?S!=wQ;_)i{j`#U+u>;1<_qcST;CepIl{TjrU}J%O*7F7E>?J`%s3XQ8wlNVieAJ12aGr_KXIGWMZ-7qu_q(SOvJRRdYFh z?>sS1SvXPJ+E9nlF;eM?i5Zue=G2>6vE;-A zwc$*TI1=jhBcGpuYggM#VcpS^R)K3cl?_g`ZqihP*6}Q0m+f37kNF!3QW@jH?H;YT zru!T>PELrsh6hb8L5cSHB&>(Isap_Q#en;bN)~nK0yEG@6L7`F#0Dr2fACUhW#pHO z%*|ZHl?imAs1¬gzq#ZK)cVcv>`5#Fh0_*{oz60z?*it5EErVk~SL%o>{*kGW`Q z1T7J$RgD9BIg+QJrv?MlX|o|P6x1cUie_$`Aif@hjUXqX5_Vx_t z4AukP%Gt=?q%?;YK%;>&JwPt498*g(!C9fpe^?JDVS^@%woekaTbMAma0n7Ve+636 ze+)KZ(Dwi@Sq2Conq)vPbvy;+3Vk zwHTHky3M9L$(Nj?o>lN@j)Osn&s|H?^ zqC9`#azoF+uEr5-iZS?Wy`6-pu}nMin>p!VMn__PcX2bfJm2A3$JITO<`8Vdg7H+OIxhZv^%r~2Uu+8JdcNhSF(jj!tQ zog63(DzcXP`55gUv>f%26*fp_`XQi@8IM~B{(+^h^y~fQ{gfxFnr$JjMpE< zIwmA^bM1tWlT}b6zt`=4dBUI?7cb@QtJGZh^ z79dRRuFKn%1m%q0kDw3gDC?+*l+Ivx5syw8W@AZmDoIJf)<|q%qGdkZ=Mocn48|2> z?0YrKcG_Xf5Kla$T{DK3{0Rvpm6Ho=J0U5REdtQOv*mn+dq5lgjpU8{Ts1MU9A>Ff zQ87Zj_3+im)tlrnWpqOYnfGzIY}CoAIpSl{HmndOOkyo$Td~Pd` zLDQSW5S@w8bJ$s&yAChIRu{F5o8o+!o&zEDXd+y$Kjm_y!qb|iD^i`@-ZYXt2xR!W z=~s`@_ezYOHwNe9)@7Cad2|_O|EAG9D;{5b0mcAWMtz*}MusE-Rc@A)$rS9&Dh{5d z+30V9uHf#%&+zSBOjIt#wu4MxP$uKdgxH0V%j1d{3+JH2#YDdx<=DQfVzPAp5*YBt zU3^a7?6fn8B)p}&?E?c!OmbR@qG9f!1y#CyZ1MpSxRVfPkF#`=NT>tq__0x!*DSOw?YHaP zdo3!)L8C5_&J^>jIN}uUP8wHf8p(U@m~FXDAP%t0S2~6+1sZ=)X_B7_vPPBOimJ zJn)EFUrD*}-KQKZJ;nl$Zkwf*MUDMf+_;%VbX=ydR*EHp-W7|n3TfK|rP74UasiJ$ z5L=H{^Pa}340BL(sASrT$X}nTXcO2ce&++fzgwET=cjP}?L1FuzT61qJ>QrW%07UT z-ugqR0(E4u5(Ww2Ln)zn0SkBDzBVMRF-Y&Esluq8RJSGC!YS2ESQqsJpu+Nt8uSut zpc?eUaYm`oBPzi*dj-MR<{G?PZF2WltBFBsM7P^t5YlKSpI)yUPSHI53yy91q&yn^X#A z9-+3pTiMI(ehn=&-W%~^N?lFa&a#kSZih5XmD&#jiD&W3i=5|MT>ao_jz0s{>L`m! z+`*|R`=pWms#PK^Cs2icpba`_KhR#YG4IwokFvdt?VO7FFXKY5DLAa&jFXdEe<1=Iu zjcR+-HN_e+x6}JYFYVq=llpl_p={%0^aG+YJ6PAr>DoEeeSqW&%<^vbpP5DQ8F30NJj|oT^VL7rqc>HZk`5)q@eO{JJ;PdbfRyA4=7BYV z?d2YST1!CA2^MSi{^E@!dltFpD{e0D3BhL?R}#72+FEbn8lcZ5k%GV{1!&dp5v9G5 zL1?U?y;#mY!-nkS27rQ2RzCBI`KU z?WNoF)XHyIF;tCbxI9mT1Jh{6^Jqj4M9#p|4X8TE2(V__+2n&R*f7G@xrEm@&z@Ri zaJ<_ha8~3Is+dA9f>w}x>c5nHxqX>GdX4hfr*;!sbL3t%Qt}015Qm7YSw!N^+YB&c z_}I=EB;>+JI%3&x-;_ZZ2co_Gwdx}`!D9G;>wKHEI3QnxW%?Sq>v~2Y=)08Luygy$ zbXW7MG639XmuJFI7MtvW;`zm6R=$ENwUbN>|5#~`NIL?gBh^`Q+qwJZ-fJ3^-k>*! znKrwkBxk2Y?5J!z0WFl9h>tEuB-tc4KOZh|c+#yC>g~#xt=@|FA-PXW!~XBYyWTK0 zz;<4(BboBMBCETN*Ojt$S6d^X&Kwn}ye2y0K1Vj*RALG}@DS+Bt|SdKH-}eZ-e@*N zTnxy*kN*g9Uy|@~SO1k%oARj}z{M(`((D^c({dhRy|n$t+IA0w{YAY-OCWI#1c4SC zA_n0>R$RYpcNs1(L>Bx2D)=ZQNgx#Co*hc9zRG!i-j5SRbuUE-HTT%=M{F1HZ$m-h zY3wA~I#r@ARXMcOSBU-S&}xgpQQpEpWCgTnD7wt?H`*h1yUff>wg6Xo2)Y&B;*sNc zi-BeZay5Ek={4T=!YnU?lC+k`LJmBO=;^tKvsghAJ_c8^%f5Qe7nt)2p@Ea9bufC! zF~M7@qVOy>sU-p^{)ITWTUqAAJ&(Fgry*n^&d!ZLaXyaZWx9tFe^3sMA*O~#<3P&l zqB>fx@siPEyWCjZSaCrNqU{CE{6SE|#}Q}CMZ!(LB+{19Xp8m?hMJe7`gu;+qukN= zw|q+W3mL2sSD`-lNYd_YH2Z$}wQ-CwF^1{xGJi1ovNJZ$I ziX_z5;^Jlnnl8%OBGghX-tlka2BdE{OO*HuR)zvLr%JPY3HShaK>Lusl=)DhYxh-6 zd@A)QKQ(`^*r?g=ilgpqY}OQP8g1#Kc8?R_V$XEN#)C$Q;eGAn8>V8%W^(KG+JCy+ z01mK)Q|Oe%Q~Qj;;P)uJYQb7iK)&Oa1cxbW$`i)-e1Sbkp8UjHD0B9t9^zHa_* z^%GpzwIqa8m3NS#`Ap#(SzSg%%2H@o5dYplvbT_|+Y1IR&XE<9cqB7CZ_OhK#~91G zLjq2-9klwer%4snk;I6AazUchfW+QaDYpSvsOM|Lb%$r`)7tI^LaQ0DMtgtBYE)O3 zPzwQ$>~!Zoa#)Q*qKDWp4sg#bQ}fdpY&yl>@lr9m6O14in(5biTFJSiGK6ZnyS!Vi zfL)f@IGqF56i30AMM)RQu1Zhvh?3XYfFw8ryI0A31ZQnunwctUo%xgyv*_SjXl`&r zA+o{)v{sPLbLG`BjSE^C@BB~+(sA+4z94eDs=(Rq_+)1Qx2$mN61?Z>Rh$js?kwd!0WZVu5iw}HqrJ~0xA0r)7<(A)YiHaT6 z!0X{K@`w!WU7Bkay*-aJ7odlHgxG*7Q(_i8n=k@(bs{Bz)76={74lt$5uRvR<7WhW z1#woLb(&SC<=-#-a@M{)+{eF0RQ>^Bvi)QEIbt|MOTUQe(>}SMhy&!tPS&YJ4-mu# z1ErkNb4J<9|$|5~D!Be#^}hd$;P%J9hW zFFSWYrDFtz2oLSXbXfwYhlvfh zkQ)NO({dNod{53LQP|$sOvej04$j3KxW2?}3A84c{DO2xt5WWmai1}eF5OX4&E2*W z_5f;fmKG@9=~k}pj)8mHf0#yC+*Q;)w$r_NKbNv4t0*P?D41^wU+{kMLZp1u^XSaX zpnM2*^t9^`x8GM$$4<#uSqa~lRypKD-Z_fiUIo#af}h|7Q%WH=WT4axCVT`CU19s$ z9F5!c_>Fg|fIwZlJ&36RKfSrnaq|~5!30w4~guq2o6fjwC%maM&F{M-So6T zxfNGFG9}}3DWedM9I}u>?Wfaec&5~<-?w^u89hLP7&ETz~K(CZ}N|umKxe`S9F;FPuP?IKMj0d? z>Y)1=;#EQn;HWO_ON-aJsK1eXzR)P{SK@knNvVr_3iF~bd1A%g>3I6qcJYlx5*e+4 zG-#=M)h!hTufjzddla;?jl+G;c7^+H)p?A=!a;?H>46jXetZ+tJ>JL zbY%GzPKh%|gR$k=4YeIrTCo8`jVBJ*tHvGEn!$3WRm+V%-XnD%EB{F0xAF%&=e!Pg zzqOhSWOFQQVC6t&Qd-vwm zw(+|;akkw>V_fDr@}qxbOat^Exk?EW%C zl&$`V;PD|PZ_V$eAo@hA$>)#@Qjm#?a;$;I^d_Y=wy8a*^T`CyG@S9=d-C45vs8jV zIAOaXd7`p%4(brkaMWcwpPZ&X2L;MSC0ikc^oUlqIs%z5OqfGNyWPn86`)jCDityMpaPejtAG=4Tl1vaD_KA1(e%J{1)swJ1fKg)a37|kdg+*T z2Bj{{{_w_f)nW64^yY%2cR;3M>_K-Cq6a-1<;15&_1XbATXuFekQh~gW9x?juZC_b zHh!oJY2;knG#LegyN5I_2ksD*1@#DB3h)pCtEv&P>Bv|dI*;ix_lDAVEhC{aw(A8} zKcyqIS%OcLx~78rdxazOL)&5lxHJf%NccUGoQCE0;)#g(bZIiUnw=v~D9$M#{9C6Y zjZQqI@C4n%``h=t5FWQD0du@lJ^X75$os(ih$@J5{lVJMY^rp9QB2mj!gpDe#7iS2 ztMO{VEJ{FL(`g`ij&lZ;m0FiuU#*Vucp(-SVV>CP%GxF(rxzEUcoQ1xBzTo;>k_AC z9L*iqVz1)b4X&s!wqVU$J(-FqZnh-NVR^@L@_Qp|ijvm{*k>fKwlHVn9_(nDW1rX} zu`=pX58$#L*So);ZTV@k%^g`B_In3CEMRWyxrsanMX_@lods~F2IdxuQzM~0) z-W@spsvF-|AS@3pP6k|sxpDh`SYf#XzEzNsZ%ln2*azRzMH+4ff59so#|XkYM^&4< z>)CinjayLJ7-Ugs<>AHGw8O z=k49obtv>?kx@)>c9NZz#i$P_dScH;MS*WzULsBCHUfz`c$eFhdzq)|P6xYC?+|2f z8OIeMU|h8hxa+f!{bGvXHip(!trtG~y4b$BWg_~aN?7e8weCkRwaHMXH$CvJ{gt>H zm^TJN+2FSf-(xkb_G-Y|7~uD?v@eB~#WnAY4%zbJ>AJo;g;v#Sy@D+`$Ga{aIpcZ2 z;OPv6#m|oP)jqKwn&NZeAEM>mHi}H*kOxTb*chlsd_Z|(l_Bd4-t!9>0|Gv5@5B&90xg3%;k4RceFg7 z?6>EFohgdqiu=Hr(AhH^*uUiE^XMLm2Be6S%N-2QzC=Xigi}ok+9#v9!JYUiwbr5? z`{YriilTP37}gvnlcG|vaMRS1F2NI`*YRG>ZqPnA;( zRoI?Mx`;AUc8a?>+ZkPzyJ>0XW+8u2^9qi^T3XfT1WmT-sqz9lC5;Sj$g7guQj27# zNK;n)YClUaPfc<_=FA3DVa*6*7&TGDegx*F8Lb_ER>2Pn)s8~bFqo+-qn)M!$aWH6 z3wWJ(>By~xdpccj)DcaUF&z!-Gr?J`xB+(Cu|Fi)sFe>pq))$E92kg{gYAd_tftTq z8e5HRT@digCR$&QnrIC<9MecQZc-rE+d#A$-9#EsV1!MA)cH{42X9%GF0AUa?KhpY zwM$WgR~=9;9bR}wy$Y)uAK;}2BCx6vU(>25Y<7_jenMFE`kZnV~qXoeL>X=^hu>sNwFAZXS~J5a9w>yCmo4Kg}=aSvt2aj2G3r-HBlB%HrG4zG!2`;Ix*hdz4dyaDIrH7duvPcz>2lKBG9eC&w8X zfRwp?#?ki$2TRa8^Tk$b;Y_r>(jnJHF#2vcw@X z>wUK9_(0-H-?*I(X-&9_>Bqo}ReMpcnl#=eDNAzFYE)ZJ+vhuM4=PdN|0HQ>% zeW&;Wo2ovmur(3;rZFigV_~7NyJ%Hrw4#}`j*f}vo z-tFv%E8vxoN%e_RZ7GD0QJ^yAFb%O{H;-lb%Wg_}r~m_fd*!Ua;H%^nifA5mLK$2V z>C_j7Y{psPc`~qX>t`uFW0vJ?dMWXv?!I8yP#i(Xy+M%f-?o*+S9R2^%)50dGIPoE z)Pg=c7FA((_R~V2^p?43oMw+7_$)`3rfP<}`F;_Jb(z=(UzM_bgg%9PaY(JY z9)QP2h6E+`T)O+iZ%-rzQ|%Q%O42_a_5M|k|KUo|pXUe#ZL9%4ZT=KuxV)ClG(9T! z$-tEJsz?Kf(UCi@#I(;Xd`d56R6ss~Pp?IMt+i+!vC?MF3ppN(*$NZh9qlVf4t1}JaZFVF02A^qoR?v;6uezGzg<9o?1|QLmpxnWj>rLCExeeb&;`0 zTeywd4ky&qUXlKD7lTRXrm3F40Uiv*4g2#*A`XaCK;6+x0mc}p zIV%1JLm87yJmK^a$2XjYEvN$uO^J<|fC}AZBd$Ji2>x>oXx<)kh%^bCZ+`@~od|tA zn+E7d+)s`!e$|nG?rXxKlwwPpoTNNbbmae7yYmf>Qv_b>i$!>XAiDtnE$g_cD^%)7hWz50?<` z5PK}3J~krt0$JOm>>6jJiXy@U-Mk^yLn`*uXr$SIKY_4AxNUOlG(d1ahm;^p5b7nl zG7#!DK#~Ew!f5hnQ`E2bE~+(3R4U6yyGcrM5jSVhnU%^fcRRI1(5R~=q=H6Vg^3Eo z;nekS{tU`bRFDd_R9_fnx{ae!qvcBi4hCtAoU=3-kCVQazh9k`+AQ&G((~;kMRKeI zXA5m2PrVOW3~bfX|snbI!3vv31d?s%Afvu@S7EYCl-{Fr*!0gd9@I z+lV`h~EPHpO3GAyY1$91zDvD2b^ucwkNm_eD!ZQX&z)AuDwb}YBW zNZ?Bn3Lka+`uOc+63_yfnCBr3?%%7Gu?eMTLDfjIgS{5B!W_-=Oa8XiB!631?41Yy z$ud$CL*AjxPV>{Zn>Rqw@WB{Q*jbb$snGp4wFQ z&;-@CzU89(VC{q3P)~uTo{ULW*}RA>d^~9E!s{s8M2-kSa921}ZJ`m75gk6d@3Vo; z0MTFuq8J%ozI5i1zw+oa;$8I&s6C3jlR;$59hNKAhx?#i!LDg@9fGVdCizwMk@I0q zNXCu?<#CGm9{c;E^HWj{S3kf4q5O2x|JR;D@{d+XP|wm*U(dk8;m`Si;*$KdEUH!k zjbFcaU7hz}-g541(^ehwkSSm9k$u&`SAb=XDu@|!s^YoA(<>dv+OfO!{Sy40Mj5PE z`LC}wj$&)Z7cF$EV{|$I?t?I>TnUK+98ve8F$I)`;XflQ8*XPqJ1~b>H1haizqQ^> zI9o>Fji7h&Zz9uE65#Jn@q2_NXzQkLGGR3@-Zh;CEmvMvDb{9y3oU7}E|S;9&}5|U zaqpy$<$+0BFbP7nN@pBQ9Z))P4X|oLCa2&0l0SqfZKC}aRs~!0va#K4mOMd^qRpkS zZBkL8#@u|t0znU`h z<1tDePihSh%)1gfz2zw1yL5wEf_APf(S^T+M)yeBICbG5R_va4N>N{f1I7Y zf>ofw4{k7Yw2Cwx?i3OZHm1YM zJbg?=9&_~0YvJ+X`SuJZy=biouOgP?nDi_Cg0#h#1IFUPPtA?W1$1{fHx1Qs zuOTv}jqz))T!IMvV1hmZ3$Pe|s*S-Q`G&zAK8=^7HPk;+p}VmB+K&h11r9O0QKFXA zHo3Gja)P!|AR2)u=NYgu5MTevzCN&Usg2OXkCtbhRpYz$0@*q)aG z(QoI8zKD~0XAkqT1@gY`9j_iao)!NIM69}uk5ELR%xZU&^_hT9f3ivOON$8$DJarP z3I9O&L7e!@WeC7ci9geK;zYpn_p1@V%K@0_|1C$;pE>@#F8I5QDF4d$M;$kR&giIT zVri!D@LOg;^v^%j_p+h@jPKvBar_J5`-R27m*Q7R1H5(q4Mg;3kY6+ZDy_fd{k;TE z|DM^&(aiEE`d<;S{>A=>5DNYQ!N}Rj+VQtI-zT3x()W_A{T4^hP|w!U$o}`j{eJKB zFTn3Bh`$Np9xk|F($V9WwoesQ(X$j&8O_zlHg^)sz1L#^Cp@ zj`pvj{2}(Se+Mx%(s%m3-oNfPNkV03iCGLVSN1c=eNL{%$w`;~e1Qk9p^>faWo@p%wsregnwOwj+>wC}w`M<3vpz(GgZ$k9em-_l6X6yTY~i2sMx z`_HtLoiil65btH`3e#;0pxs{ano^ zg8!cHM>PR^rQf~HxcxWP+yIH?1JDuxXa#?&W+>5rPy1Ij#T<>Sep^qakITMN076Xw z;k%y*xk&ymgu*rkP7c3iT#-QikPl$21t^fvPmGTM9sS?8q>7ofp^eLLDMdz`2!#QZ z?Elu7sDOdte^1G8Xzt|TXaz8czom^1DI68}kBvD=`G28R1Z+|MmavgbhFKXvXbz~S z_)ntsqyE1TO4&F$7)jZD_k;0U-p$8!e;InhkJ|p0@vu2~&>p~e`)~DxfBS!76tuCjwXyzxsS#oE zkUu|wl@!4GbBDQM{J*gB8~i^T)Ni2??JdA?@B$16^G^+04EXrZqWx=~A>ig{qy$)7 znK}OXmgrYA3cRwsOATl_ZwP>m`-y^=^S`6`v#A6v^&A`|ZS)NPb?)I;rr~+bP|zxOfGChOz=k51hbzO1%C6<0H z5;ZPy4Jrp{3?kw`on|t3I#?O4@ukShcoO91T_uez_oq|&$o6z`c z=R{xWiIy~Lt|Ld__AbSx`dQ$WZhdDuJ(i=#j}Mw}AIEzU;WA=`%e^lZ++W zgtE`>ZkUWL%`c%e`xJ)}!A)TNWuDAuyB>|rW`O%tREf;^BrNL)OuYuC?oE&_ zlle$J3MUodyFFhk{1u=SL`E0^>WqA#>o&tMH!H=SnZ)WazG2sPYFwJ%Qj(^jtS8Uq zkmjWD!OrJTVS65LwBd1k&b>7s9kx1f%R1_R>jhi7B3M2xlPWEmYeDdcl!zkg)}>-9*%Do(Rj?GiC}Y)p<7 zGmDRWYjpV0qsRq!a6U&jzmr$+k;nzETqs_3{Ets~jjah~_)_R>Ok7^I5pQv%+s)2o zDBAm0->I1K!S5uA?Q~J(%RZym@u7*9)J%)BHd4v5WheJSGXP4V3O*RoI>DA|=j%EB z+@EW90ksif8bWZDpYU-p*bK5=(ilsopx~Gm{orIJSY45RnohA8{N!#vv+03`%E?)< z#xVLkIDIfVseV^+>A?#l*l}#0&FON%Dt$I`+Pj~FS&m6hP1yb`K6AoEmFP(-t^YY5 z9nT%Y_cpJ;I8SZ!%40kFUrFr*t4Wa&PL z40}KoAITnCES^7(v%_aDhr`cc;B=$*PPG@$>%L>0(P1&ip;~8q8c`xWyXVBCWK8?@ zSVd^eF1e;H!nOVxoOdkznEhqa7XKSC$JM7KX%I0<>@96R83JEG=Pkp!^@V+gAumuH zmDXtsaH(!^L7n`#-y_DFn{9O9sk5AFfhm9S`|JL{ zMYO+wih=GNdPq+wC%G#+oo3PJx*PJu+8;}qQoj$HcY$5#K6pV3HMG;>?tO`vo*3+C z6^NMsy0y~k@3mB;d%9!A{XvF4C)bY(Fu{+~kg*S`+i--hjJCfggR&Uc5qmVi}qhLp^M0V3p*D@jvJiEu zr!wPn51n2aaTq2D06T=3;(n+)m&G}sxp?yp-ChpE}hQb$nfid~~Q{7j(UbFHNnP;p$YgRq=3ZrNUp^3R)n`N#EfcMogRk zoI3jP!ob&AAN9=&U1XY)*@U?}dk`QkFnVm}l;bXr`BRKq5v zqvPMquLqgBe>1*^U(I7L=@o4IhpTZ785Z0ldmeYLv~cTr3j@Mn;h*rO7OotjN`(=0 zWAhw&ITo?X%LgZ|zl<nW@V@Q5-nMFhlQ1AR+C^t-|iXF`4^yzfTmVn zh6@!jS}PA1S0(>10gFg=JLOj64DS2HTygR(?tiaxa2rV~4pwS9`$aWkq9r#kQ?S2g z@i51}k9W4zp3}tjvMOF<+kdDzV4? zQH?9N5ntoNK5;c4B5@qTITTI(GgH;b9*z0bs(Z(hazRY#sJ!T~W@u7TY2-SLHV5at zgW2LT-sw^gJM6-#87-@$^3>P{yD7us0Nmy}LE~%wuuW9P_wZm>L?b-}E?Fp`%lgj7 zSaVEyc&UZx5P<35`Nz=_?4C3dR;OWjbde7doK0>TsXOpeP1F{IOA*XOE7jj4&v2)d zd=O3%T87&GR7Hy<7%BjUqM>do7RbP%i!*H8wJ_fSRaYjJoy81gw-&T&YEz=Y#V(c4 zoHlKHE4DD$p)0bN>@$3YnCZ5FHaQ!0hZqsZv@ZD<}}=f14An8#X0w|jLrt`x3^w1aHc5NXRdHB*}43hUyd zC*r;Xxeuh!oKk{zYJt6+-I!AhaY?QfE`eLLvsgJ}KG)WQ&2%zWPkKO7xmla8=7$+W zi`v%X0AO3Fa_ubIDJ08!KNHifHoJS*?mp+?JN#JD7lHppM)?UrHI%sE`rmyPgbBrd z!YKP)uDpt4mMTqnZK?JJ3rBQc@%$P~56?{q@kKIMx9&wiL+ z>@i1NjoNW-J0?RMj1^4`H4gU|f(fA>Sfb1Cexon!)T35-h+2XA{M8G-h*JLOQR$BI zJ>yohE5_-VeRRETdCeET#z`NuR(Rds!tR(Iryzp*WBx7QM7YnOxo50QLfzW*xTWw1 zYwM!^cu?z$1kOa~)tXGyriJ4=U4lOrp;11Hxc*L^FQQlvi0iOHEpuh%cb*jklYQy0 z%!z|=h9?X#Q|17@(Uhr14m?plC>@jIeT;!-+Y>FGR3)=ZA$wMq(Pri+!P7zC=>G+s ze+W>n5^v&F;v$`0{p@<@e`_j((HX7K z4><342r3nnzaxw)xO*6nsB-eivZMTUP!xABnuqh${hV$cwi%Q^Osl7Cw3777C@-AX z8>Qr9Wi~Ck9sE+29*EeoGMv~-gQMJx;>*-iZG`9m%G7a;8j^7rq_YBA8Hv%+JS$y MI4--LjkGNNA0UW>#Q*>R literal 0 HcmV?d00001 diff --git a/WEB-INF/lib/commons-beanutils-1.6.1.jar b/WEB-INF/lib/commons-beanutils-1.6.1.jar new file mode 100755 index 0000000000000000000000000000000000000000..795655a66ad6497fb7721403f5fc1aa0aa03f313 GIT binary patch literal 118726 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
  • P?f*Xo%5ibfnbEB_+`$Q}f!@>qxsBsdg=fq25wToGYvX>DSK11^!2 z&n9wHxOy=4wzLN}-0yC+IN+p?JJfsw%$|Z7tboO?9%Q?C!y%DYz;E$U=MxJh7cX?f z15lSx77I`WOt5VN;vlEIEaSom$W;JC$zfqJ(`^IG)d7JIv%Q_KGAn@P_&~fwm+0OY zDNNf#!$C`MDlD2F(8>U`lr~VnRWmF8KnfNn=qZ4($A?=%NB-AGfZKk+O%4lEkNrPD z;vhKKP~rmt1m^)kbn%IefdXqZe0@a0$^?bNf#lBbBFO-d&{O%u1`N3R#EUCIc`r=#8R?~oM++a4MYn;BAG)Y;q_3*q$%QtK^w}JGl{U;8r22yW_&9NNMZVLjZo6~KvM5Chwd#`r^Fe((Bcj(UqsyC4ck zMz_J>!$R;f!GW;Fv!k=$xNJ5b1XwbqGD0BeFP1mPm5VqegH9Tjri!jMCg`%!o9EWA zCo=2^fL3k+BOKlk4Xy-ia7f=;aDnofeo7#C8T`XmNFWjq!9P=n%^x`|OY|-)SbQ{r zvRNCe8}zeJ+2SGjv^~-mti)V57v4B~XRZsp)|hC)ixf*AmtAoP|3}+fJbR?+Zku(W zYJV`tu*IkN;1UmPsDQM#1v%qCMfCslLdW#vMrDv#7Xc^7R{9PV*%2A_1lLi6_1iHcYoZ>XRFdViZ0H@YU&;q8l2Z<57sQbpSEW}SZ=oY7I zZ(_UkyprW`J|qgfCk7Y-n*&=h4jA0Ri8&12qJWhtfN-G=0^sUtC7!~!aDFTU=`m-Ww;U}fWfgxVY^>NA{6 z002D)Kmu4AJJf{>2;pFXytIW!A&=SJ8UZq+fX=YzT<%v~vK<{vz=8yni;#jI-BPG~6k=8<>9IYJAARKTIc+NR? zs1f8x;lKje@AZ8&_(H(J0{q`2>U>WY+h?#dGYf@4z@iOfDA3_TKsw`QFujv6d=eDtb@2%kl9Q8(s zi~z*>ze(TW*)}jB{d-}D7j_<%Y2qqSI6qLhG8Sn%{_SIfjVZiP>B0JEySbK+D{LF} z=fWN@*q0`YH3?wyB0*Hd*78%>_F;c5yYT|XY~_s&T(9z9fYEDkynwMf1YYpKecobx-?~7-ku1Y+{C{{|WK$ zY!~eln03{#x0roV+kyGL_L>cx<7XvqhM^sU5V z9(Y2ZRNELK=|C*zxiw4!qEAF&{+S=7ni#_L-jDg1YLNAb##Rx%e9wMxTYlgKKwM+P>-J$n{8~whU$UK z61x8N^j-i01%hTqmm;lO)51#a6lT^JLPFrA%6gqqxlU%wKFbS#{Vn2o$mP0L^o-dr z$Hw`)IdN%1q?t~>}r!OP-q!a;!q}jV2TsY z;GS?#aOzzLyUoDl&CWsN#m^s+#b7C5JZ!d;T|vGt;B2t7FqX*>S+s&`-SULd%|uWs zYI=f!{Ys=-Lt z^J7A_+ixV~p15qkSWIefByz(%SD88lJ$16`l2mY>vGtPmYpgjE&!A67JPQ&C4X^AE zV=Fly%_s6W7C>NLe_vyWgArQ@g?q%zEIPa;+67U&B@SAN=YyTx!5y@a62ES*MT0M( z_6%CuAkV#zFDK?d^TsGCQjVw8iAwc4a=-7u9v0(D=KKUFQoC_{?$$Qwm0CLY=DHpy z)d~kIj<2Ik58F9DIm8?rQA^wtbp|S1K6;jPco%@LP~?|{6n0vT9lJ)-$x9dLu^){Wyx{DK zo&b|d^NaUSPcT|pWg6^5&kFO?7|{>56xfBnUh%XFxTV<6+wpFVDHtc*%&RH$kzTH$ z=n#AY!-ksQh=O#Q#zU+K_)!FL!RQ3J^9ZaY%&H~|-~e=u9TZqYOG|3A9%(8#UFe$P z=bjim1(&{x5q-s-BD=n7G)Xw~p*oQGf=$ieBQ=1Nlomglaznyu%UkV{T2NFEU)C;m z7Tz1N^$7Nx3Ajp666An^fRsL*{lDq$-vO-jR{*SHZD!|WBxYv$f!%-Lm*j7Ml(#oB zG&9h1H2NE!3l#uzz>El9M!rT1Dgu3SaCkgG1E=r;?J*dVENK{kTU8fq3d+_N+E*%i zGOAFrcOahxJJoyL-OX;c8!k8I?=usgo*f;%J$P7bs#XW$TU1~Xv(Cq(T2V4uNU z@kZ2dfB2EYYpNUnNUNj{a=$SgB41VGIesx|6h=&uJqgNfq9-};B7)E>Xq+^*nLyaASX)r#7Wnh%jD5GN_(%2@50N$t28~gwlVXuZ@f)bg16W}&O`%ju zRLeIWbKA}jJAH=GzZp+v{{#dC|6#lT+ipC6#cuzwm9VLvnf2cZM|DF9Sq7#ghzM%-IQs(94 zDCRe{=f#I*hotnc2*yJ)6Km}UFC8A|oF*6N8^7MJun;qP;2Bq=wnj0|htw1FhK7b2 zjCPGs3{i~KnUV}?Mt>M3?8MkHMai<^O7tTNmqD*#gd6a)u$i&#WE#p=bB?deprd4L zt<-9V?BINDpWFulm;3R+lMavhikJ><=eR}WK~I@7z{wxb7 zg{Q09&EAx|$*rY!iEsmjw^as=`<0S{u}|+uI5kwq0X2L)6tI@6e76adsx3f>gf%Jg zXEs*4&a~QXL?w6N*y(nh8E7&IPKm4<@aTjg$jl7L0qCRm zGf1=8-0oTbwMX1!+Ciu)sSw!~P9-5v^Erl5oFaO`JS13^E%Vat&t*H{$9bh(s4GdA zImhWV$4U8EEySy0v5I>8%Di$wtQ2YH>(?RLSAe>kO%=_ZykO%2FfW5eU>w8px6MEk>Tb*TAWb`aZxE_4;^Xp9)~$L~*g(81 zt?60m&$DeiY9mGq&||BXsURe>AkE*iwobB&`S)3rbToK@Zu{!eie^ciRpoj*_Ln8) zPmr0Hkwe=-3`{+v7uJXTJx%APi0en-BhU!9U5hZr8BN7hU({3qsbL% zK=8*~(MblIB(0(zPlZf^onMa!>4ZGbNADh&a*(o{?9qBnu{8qYmn1kSHxKXYbSrRq z7|Cbn;J$fA0Eb+2Vn;b11{p|3IBrfaO1pAZ40{W@m>j+lO}T2V2t?mQWkO>gdifTh zx%mInDR5-LqE0f(rhKW z{F=S9fqa9Uw#m1%gn!mZt2;*eLTDFDLd24_ULL@`}2*m-S*{kmg-g#Nj#ZO(FbZr8j=E7l6BL`*n)t&#;tXEv!qbn~EAbJeTI3-NTH z4`HEb?0!SDGUb2fS=1z$HJmi}bwqIfiUH;I1;Se~Ag<&p+rSWckfehBN`H&Z)04>6 zYzmrKtLX|ikXr_q7pqjYDlO3Yd8RmGasN}bW1DJkrLxEqvAC``lF^MDw~bwZOLBze zwmddJ&#Ik%>j?|oTtHqkt4xIjGz+>{-}o?|7z5o)5+sBDis0&g-fs)nG>Hb}p?zLa3A z1K|KHHF6|f#7h{ebPnsD`Q>*8g%CQemdpGIhw5*LNP5iQnH`MX9iE@=?%^O?7n7>V z47A1g!hlfpW+@17h{7m!L&90`2y1inAu08ks8nN>V}*tK$)>3qe)Po5Ly1QX;H?Jt#bLU`JggWKj9=c>$G1DFM0V7z zCUWE^dw%?qt3BfvALV#hz2Dh%!hkEn!#T%>9n|oVjlL8d$hkxms)?1*CkO-!aHoi) zB=e2cE}{|4iiJPo1t5ee&}k9D`73Y9(kwSY3W;W0Zt z{Wdq+($#0*5A6&G`7?71{uOioE!z2?5qqM_n*EA0!h6)&qncevJVz(WXVa4*JFT3b z(*a3}iV}9-1XkU&v?^AByeMKf8ct-qLbp%W_JSrzOohz19T#2YK&{iUrz}#EPSqaH z4=ZaI8N3d+$JzY9giwrF;+nGh)Ff9WbZLDrkRJ(s@sS@XeKoM`+LFb>L}9>m0L8I= zFEo5Z1itV~E=l7Kn73Oz;Y8u7C{N00q-eD?BRDBLDuMlAvM(Y1A2PFr6z+xw4VARm z*1yfIr6Av543%`1>W8YO`eQ^N7aetVU;*k}SD{JtDs6K0TSnbUoK)z(A2j-Yrq}bHTrcCz_=%PK8Q`vH(dfawK zaav);<>#dON_62XJzC2(HzjC6gULWxZLjoFs5IFGHev>On_~?R(G9ycDPZBM;GZi& zbJbopiW~E3xFbaguxm$!G&wQk6!bBRvzAp9F}aCfB{w~j?{S$IXU)S$5&HWxTh_M& z1^8aUAy8U;Q7zh)Hnc2{HCv8ucL!t|oxH;`zOtzh+`7}`LVg6bXn7xh+71-v zWtirlwWI_(bNjOp$X${6Rd$N1hd#Od=*s>M#Ed_Ijn}3inBdWi@?xCT!0VZ)&T?#DK8?pnh89^`gk*y!^8;M4q?Eo zqTER1qgK&wDP(cMR|3`1P+_^uzbqtNypKe8; zIBGj{<=vwY(xy~)L&BMcp5US0+red2L@_S)0gO)e8})G!u^zXOd4OA=ge?1|jPX zm(_;tt9Z~_u18+e>L%?55iLl*nRDQlM(xZ!>)>5Ix|Rc1!?-+^rWJo3|9ymNxJTO2 zb%UdYiw5n&4Xauavn5hMu|#Dvef|3)GR)CXOkPoeO$_``??Bgd6B|VOHL~NrDV`=Q5B9ddAH|M84X(-;{uMuT?ucbHP7!j~!_haRgs(KyI7Ju8P>pzu zQRg4NknF%duubzMFSHIJ!mKpUI<%YC%Co{J;!FK1%G3#Nhk5 z0TD5b!VUB^K6_at<532sXLrM(R~3m-U;?e@t3en?CJ`JszzRMsEVNFKyRr2wBhNYD zX-I5xn6(dbW%gMNxAr^f)XyR=mlh{yP*Y0mv*1K2j@8e6FP|S>e(jWAV*l3qBT;Dz zmJc800{{QbNB z`ptHmXkl|jBYsHeR|+@+z=Rx^pFC0YapF)+4f>h09$wd7`8wD6V|qV1bIxXnSKD2VrqV5=aPo2D#^q~=Z?Wyzj$uh?7p7;0858;1i_tQcP$0R14Ar>~W6gLs10I#|XpeF{G zO?0rM#|)DdD}T31&gE3Xe^ioV%*_O383iBV^~^|v)#YP`3lsnFYW^Tk(i z)Q)pe&RP~v{fSRZoW=|4!D26FLHTYr3&b*F_FDJ-XDQl_K<-0W5AtmBrUr21;WCn_ zc6a+5`enjQ-*rYG^P>T9qx?9Dx2|@#%})$GqzSZ zUq_eyh}0baG|Taq0&{tL8&|h~rrE#Q&P#DrcI6{5XZPi>v&PCn(D4c^j;~|=ZY?zj zP>Yox4HI>-wnvRX!d@bi`c)cEG^P4u6XaO|m3aUj&(7*;wR$p@dBJ7>qO;s$_X_-i zrH-X-UiTOwg^D=XEHec&DvN0>>Ch=EAFG$A7r2+G7pb?Vk4i_%GKa1@6deg%N0J32 zO+8uppt(G}glopcX-#b6q~(_X*XHL8YInYamw5ol(Gj^lQe|s zVA8KIk-)x8qQO~M%jc=|@^#3=v%Q&+vjYpcksP^dp~($1D#X4IRSV3OO63j}V^Q1~ zO;K_dopNGqgLZ@)Jh!V;4=>*RGlt@c91)(-Sy)ZN&nIo)OAO~ae_50$9e}MhU*^gJ zm&nVElWFBQ9>shnOZQ>0gX>7q2|dIr+%ug^wQlgvMX@kdCK~rFpk(*S|Jl-K2v;2< zcBGIAo!~9T0{cbrAZdPS2Pv&9T4H8s8bt{faNrtAhp>>hh5Mbdm{0QyAJg5^#C2%_ zANTMT-%lRI;i*&Otgo!Ro$UpP%&{f5#gI*ZMEllm1w->67y|p#4Ch}`>3{P4e~`i7 zP~@bfEr+atz}rZ>HeKbJ0PF{h4rbQ4ndkRaR9NU)An#IOc5|ghYnk-Sy4EB7mH4aY zPZ6OQk#*Ngam<4T%?631-mx`Kll?InW}o->=SYsEOENIxz+|i>R-UO#NM@Kw4=S_yb|OLJDFqXLozoP}5$OeE~}4&9-9EaM6nzTU@5 zX0%2gJcVXd(5y3c#nT)5s0#ZpPQV?Ms2ew!)Ay)}gv5DLFd(Reqieq1WvFcro(ff= zEw)BoISPi-IMP9>B~Jh<^=fnOIFZr82GhFQ;CK9JJwhliTYuyHt*6-oXJX}3sfjxc zkT*5nWP#R*?WvN`G}IW=9xK+iGOdoTlW~FTGAEM9ECjkn+Om#Gc%JN+ymMU0Jc($0 zmbHl}Wu2x^L9CPCQ&f9v%6sbC-PasIn3qj;xpLiqu6>@ig{wNls&&MKWGFcF z)<1>=x^{%3l?xW&6Xn2#SrWfx6_OFtVaDL@&%~GK7j<0}4XKCdKM81#>4J=kpTsPd z!0tze!3rnGU|56<;yxvn2|m@kmij*V7}|Y7XsH;>#)H;l29~WCvZXoX=35%W4Dbt! zXI(C!0g;^YXj1y_$hz*%u@2P@lANMeA#I-6F?$0;%;@E3(K6DB8ui zThtz=^>Mo&B|EWEgIrmMDKl3xgEu4?;PJ|&$lQ#=l%^O- zQxZtLO<6*q>;;$rd3U8WMlPc=Ab1DtsJemj)swqsqpDWX|B zVD>oBDFmtp?nX1~HM9#=Diw2b>3Jw)%rGul>ApJ}Ho#jez6VN#a$u9+)t%SqtRTvF zRmycL1=pQQXJW6?=tpFS;Xu3d2X0>)-i8hO^A_PSiiDP3>cwhx z9$p0!)J|$*DUuqc^XNd*F1I5wYPJlfG;NaDlC%|2>o;YxRV|Q73%Qpfa@l3(!S=)& zJ($McJ|CAXVa;0%7II`bHJnVaZmhiHu#p`TdX1s0*o6D72SJ3HsBT9xqYrSDl7h#~ z5-EbAh!)T-XB7zY32Klq#%2~-rmSN=6}Wv1z+4l5#@?0FCqp$3U_iX4WOfngy2*Kg zViAj>c=AOs+<%BYB9JVHN+qMG^cdqc>?mU@RZkRGX^tK_!o4+ZWm&G*4kXT{*3toF zB{rckAlaxxxNWM;Z09~kV12>GgaG_ai~OX zLo`CyaZIr3?VUf$t%03AHiw@`K<}MsaD{`p%J@ zEiIQ9Yp%uy9I&lElg{EQ!>Fr&5krNCVL3L{8}D+*mAh<$LyyLo=U!X?!T|fq5kvgT z&~`xhEv)<4k$?9wHh1nxO>dF^*eer?bL3=hK?v$CDECzrmQ(n~2LuCCjW3jC2F4l1 zaL`k1>3Bmbs9p4^eT+;pPjNh$98wO1Hi0KCkcSa+d^i!AR{vKfTb&fw~bElkKRI{o*a^+d zc6`a=ld!Qwsn*W(bGQj@T!p)0#O1ndq(ia*(psEvL}$VJsmHWDB&#_y##KOA>o^T+ z9lkqf8#&HkH;g=@wFp%ThA7nQtQnJFZ@}eXUh%T5C{j^FlXX`33^oY__D^EcBqWzciJP z32W8Lcc%rVYI(m@zs%CQR&7uu;PdXQG<$QkQTr!tHVJP64SU1Q)S)DwTOc@wCk*C9d7nc-RkrD=#+U{9F;K}QCkY~KORUJYb7D~Z z=k!CfK#{R@@?Fei+JS-Go_(TURd-dgvY=~DZdv8*B3~0`dh6odqohX+e+4`%by+aR zAlgQ}j!EX!+JEaueD1|)mjWqJRsmlA^5YI~-4;#uwi!>&T0uMQ_4${w@fk|G6Mmw61=WVOSlZn#C+QgI^7%8e6YfiL5;ozua*{XR|c=_K2Sw4 zbnp#7=_e-QuBq9tKX>>|82~z!jKZ(qe<2nh^+(PuxsJ{xOq3yd2W36O9^GCr-mb@d zHm_y|8Xe%SAVxs_^8wfpz!wQ z2RbX4Ks<^#gBi3qp7*Y)M*at2&PE-Xs(=VHp6z{DJ*;Vcg!HMjC2HhQ>5XGU##MPrL}bjTA9 z>WTHSnxVbvzwN*+6bE-A=uz@OVob=WP)}tY)O}sZ3vX+3n1p{$YC>%HwYqzq8hQ{~ z)=tL4O)c)pb;5g$Z#C;gS|s+7QN6Q0hP1*W%TEmV!NLVfv`?e#=gKT&ghOflPQfGO zjZ{Tyo4IUXXMuEn&La%q9B;b&-iJIJ3|iDU@^Ol(y< zDVs`IUz54SiqtwnU;g+<-o)mYh{}Cuv%m*#46Y4M=nU@d z4F1U(T#$|+J2Koi);BZQH{BOR#FmkX!NN3%ktxLD(U3HW^f)=maR1OFsQ`^MX&3#A zzadWb$m1@0;R!h!37JX3G5Nv4{{8_f$Wcbd>~5S40(TAtD=9N)H3_OEcsjsX$2b(1 z7$n@mTZ)PpB-%tr$2`_SR^QIfoRJvB$5h8y&x}e7p4gxB(++d)ImNuo=-8(ky>orT zAEX-OeTt569Vka?f;W)*5%(!iFNh2o>V9qdp>qCa4BA7Mv_30ed(Pq6#c>9}zLvbsohk_&pfs`N{q_89?cr_z<^Aztq184Yd!aq$ zdK;DAo@igRjeZ*h5kKrvqHmCh5AmurWKzVFZW|hLV%78xGTu`p}A zJ6ZZAhBW;3IYK-|{9r1MaU^jYx1#WFsD=c`$fge3?OYz*pt^en8Xu0yP`pf*{yJpR zKnlG!Vw`a2#L3(WuzaWCZ!&+CMBEtT9Us! zF!|H(h(c}%#b5FYSN*u9qLWY;Q0-wg1a0!yX8bhXUG;u*9DyZS{w!i>d)k)701vsi z|HHwU3ipV)sAw+2919c4>I-RDY8tVr7U`j!(Gr3iX2T)oC)#dxQ4_pvcyu%&Cvbxk zL2OXWaumoFb4b-6dYE4)zkiFUtY$DYR(uXHa?|`Vb}%I)mRZY0yQ@Za3`iB$@ZG?w z(2{0r^a4p$i5&v(QCW3N6OzSjF*-l|Wr1>1r*L*}sk?J32BqnbE$IxtAS)7xSQ=Gy zo8YD{AeUX{l4d_0GcGxoFlWa^da_(WiH+%|I6mMeUCvWv){-Gld9#a`md;093VDf} z4KSV23atS0JS zXKG1GIADp_cPJk&_@`Q!%!0D0mJUwBfXfzv>Hj-GB&O>HdbS=Wz#e#;~XoZL#m@11rc%@IZ_g1 zV$D(ECH66#dxGjDlSXK@ zbXU*FS5oQthC-k(*FTr#L%u*FYaNj(`W0E4Cd0zU%(MnL;p>QGBEg*!-?nK&1YE4E zKMgA6Tdb)-K^$Ao%iDqS~u|1(U5h>8rZf1H_s8>nH@ro-1@O zTa&MMeR{*A6^~7Lx>a?u#SJu`Gs5k4HKN{iKSb(rvz(r|+ao%K;rx)n3$Vxo z5f2_Yw>$pQlF?}?ri*Ccr}K3Li_ax2&?O4MZUN#r11eA(cOY263KO9mxFF$&w)ZS* zD4ylPVzSOVTy2$Ez5)p*-w;*hyl?3%OH;a{S-9hLTDdqZeP&>_hvF{SS{QLt z2Cp5%3fiuwtNM;<{VNcBz*)0J?KY(5=ZcC+!pZ69^_3gaOYGT(_COvxM?OAisSrM( ziEp04$*0SXOYa~Nkl(rK-x*%id81xMTNP=#IW2g6m2jrLGU__WE2JW;JE&elm6Wzw zrh*4?wF`RXTz#YSHi@OtK|5hM+QPp z1{Ow+06kk0RXs~5qkmPW#E;kwSP-EC+|Z4N52)LP$95A@8z~wA9toZV1D<4c&5Sl0br@$D+0-h+^WuQ7XqBCUU@gLEvsH7FMRTBOk=f1l;CsN?5uSnHAa;z^#bk9 zS$@ysV;Y+JLwvfX{b*L{Q~pWKG~`YP+Hy7h{=JB~YJ)k5P|X>Ics4Q;?u9DSSe4@R zMH3N(p@6B_nWV%6x>PhtZNREPlf%;7H2U%lWNGfKbeR0333Qgwu*W#Bkh((g6d6HX zK4eGddnRMq>tvWDuf3lX@}Q*^j&Au)Zf=BV0Qo@j+rDRbKGOkVd?mZi4^H$7?agfL%^cknoQ$0Q-Upl*C;dCoGWaVVG$Riv1)2kOpOP!4oFv0VF@ zcgNf>-49*Seg$Vfk1gMYUYuvwYEosFPwCw6CY!wp$J~5AkE{S}1`VzFCH#Nnzy9p2 zmTYMgM?}^*jZS4tZFrO8ol|lf+f9B-GwhK%KmLOIbO9(wcTS59Q_&A5MJU=?yPaf)IBBE|z1-(_Ezb_f z93y!aIE(yf8!GI$;+F$RQD{1>L0j4{gsLel(`JHg{%8*fu84j#!voV1sJ9CX9axrA zjv`zri|CJu#p%h&u@92$f$ddd) zLyNDZyZnN#jV-?5Aa%I(NgM4MeboZ(kF(dWPtPSqABYh9-S+Tb(=h+uF3$L$5g}w| zt!M8hVf5j^jQ_|eOMlc(J~|vQxf&vPpgK?y5LW~#HnAh1WBbUyg#u)Lg6XVaa~a}| zkAa1I_$jrw3^61pFBKdA9jK6%dE06 z>gi95toPv}yUZXQ$`N<#GLSIF5OMU{vIWX!7;sG55&~>vw~#J$8W{Wpq1l3HA`E7G zPbr4 z(fw^{>C0=B6`mA-S4v}@w5jYCeNG>lR^7`CouZ)Q;BhymqC<4~D5yUvApC&p_}=5D zCKek8I`GS1kw9hj+DX)`Sj3Q|;@4bfK{_fXZFw5nq2p^!86-@7EtE(**;-zb2JNg= z*~lQoE#3j*P@gpRvfT|>rBJEAylzu_6AlWyR3ey~+sHz2$@8K0bMrKI?)Q2u@n&T9fEJhS)hV;*X%*CII_+1<%lWTy^<=}< zdz~#pdtm7W)TPw2EL@_s2?eDEsX1SROoCsrH_5wu(N;5l;&l)%Z^s!Wdk#JD;hXi^mN zTzlPKA_zz))G4S?DTyEHvcbkwCR%PmQhV^#dV-{;h!U2uj|w5&rAlay2GS0bi#Ov_ zS95P~2QPB2>cadY$58FFi&L!{kxXSTccm zckduB+%yIlB6);Iylvc%XLTCAfo8 zpC8v0-XCY0sN*Dl8?Eq5ndqS?8Mj6`D9oqJXXghpXtp#JC$k0_cC=$IOBfseyU?Lm zz{Mm@t2zh$0($`ScF_y9qRsRAEA(#x9D$jQ82g~R_&=q)-vfic=j8rA1^18Pwtt>g zQ!;W?aWu1Z_!~?L;{ejV0ti7HR?B3OrEk;EPDr3DVY|DO{r3QbDGQCo=oB1%QDIJ~R;buiY)%ZOTx)8MD7n}r z2BJY_Fs$H(Gq{WyPC>}tljE&@cVp7A>b(S5={&pll?-RPT(GYxH3yK~c6(1mNKqCy zBI;`qak<&~m~NPFF`pHPGH{~M+=Jp*BZsw{FP^RK$K-K9qjVW$y}pWoL=RSnV3t8^ z+#8#EmGhG`%_`yJJq+$YjR$};p8neQb5z?+7sGjrT^&`ge$RcW(Sl{>N260(6!o14 zctd5H&XkzT&*jiuNVj83MN`UmqeVP9q_foueDMjgU*k^6ePu9dsBRfUQ4)L8#YjU* zza||Hs_RpIU_JKU+k|$@s&6|1iow6ev?^)cV7FdE=8q4RQeZ z@}|-tw7X!|Zm1BVffV6ViRuIbKbY@H?DisvJ*E};0`U)nz$8Mb2tHYO2Xq3Rb5Qy= zgnavGU-LRxExz!4x_>9$ZVCwlSL)3RB863B)ta%@?yU*J=8D5u$kihf?vn%~pXTt3 z$0T7W)P?7L(fX1$Rsq#?bi}`qfsDX7ClecC1tP3JAv?0@$-F@BX8}o2Oe%yN619jlM}yb zit0*D`fA;q>L@zlFt4KN`pN7GPe}<&=}MLD9&V7xoC}A4H5n*;Sr%##k6{WA53KNW zcS8(-PCH$y9w(Rxas7@5+$$z*0!xd@)LPx5evhs9G$)gl&<(+HIgY#jfX(IsN9_JV z+JUPAT#CZ;Xr9uzrC4MbJ;*#$&y8YTcgo^_+7|b?+v)RZvTSl%X(lly6`C_4A7n-- z#Qj-&f6)re?LNsUw2f`k(r_6V>V6lDRPVXsY1BuMxkCkUAH}1n+tP9oBa%^W4C0YR zxQIdg7|)vUTk^fNe!HOLjZUgJW+ZJK16Kf^-LXhCkHfL^n@!#6yD1DhL}FH$`S|-E zqVa`=(G~4OG=%?DGz9)L>i&6NRQSJUNB?Q!%1dQU4O<1_mz8ro?643ep>htsW;GHL zgLxp;ymw3kmUJi@rJrgmNwOi~>HaBQ;{B43Q1#@L(LrRn8?zw-?aQ^~Zi8bMsLKbk75gh9EYl%l+(1c7Q^MOnp?1ff3>R2l6m z$(7v~V*vSQj2>gG2-27JJ$0Fy6#Z2X-nvopDgTErZv>&Be1sL7~xpn zT_#xOO;z1}3s`KJZK0g7PODS8J4%rD#(5Na49tw3dOWPxPQ7LO(iYfxr&C+?9+P=d_=rta-FlE!DDWc^<5}-_xT`j*K=&9j&CRrAN|km$4Hb`a&K(U~4KjYncTbG=88jsxCdKjXl@AxBS1>l9R{yEr zV(Xi{d`sb%mD2slAVI*mQg6fIv1#Q(DQImy{7utS&lK7yUF|XH5}-Kx)}!GjeoGmx zbU$e;*OdxKtqvy4f)Bk(=DRuyqWh!av&y43uxa7o;MXHSUOhfiryU7?jC1HIQf2As zr`bfZXE=o7JsIRuwM~3*AH;7;C~QLIY2(8H7)PLfAo)B~rpiD|;c3! zDQ9eVTT;fpLN*TTnKn~>8*ds{Kz&=Kv$=}{jBh~&B3_Q!t>I}lL8>(Z!iUKZ$Y6H@ zmwy5LJ!~DMPZgX9knu+BsD9o;#MzX$&?N9hL$?$p>2XJx4yFoOz3>jwe-Hg<$iBSl zR@s{)Iw{Q%^N6%o`tl$tq)(m+8yC(v;M_oDK!yhQrN0xOxAIgkq2{i@AQo%I#YdIo znp4j6*PHbE9kb8gBx-y1?E?loNRNq`QIEp@4{Z60d<1zMm>`lY+{^;J=yom?sjF%i zKlzz=0uW@qM)AeC@KYcRqfO40gs3AB466@n>f_{=Y_QvQCzk|4nRv4|ftaUi;_aj_FZw^d(sB#QFmyfNhM}G$qZd&qA*FW685`jUX8j5dgF7$iIlP zBMzKJ_nGh`q}?Z*4?HgpRS|Ttp*$r0{6p|RT0|K<-K>a0$ zIM$-^GPbG-&tdIsI6`$IY;EeINenzOE|xOavew_Kxe9Ya96Xzbf+fMY=qQ>ZZlJ1k zg}POCQMG!%fYlOQ(aJD~1nLJ8YEtm6GBg6#7}wIQIgAk!Fk!;ny#efvW9Dnq%+4}AWJ&fsNFdX&^&A_V36bm}sf7AQH z9Tay9WnT_Sa#o+kE<>&>FagLMA%iGQ=e@!KxzCZhI$LG;f=C%P<|LYdUChc`a9;iR7|J_drtbvOHiVGl({=(m-)0LW zHK=j(zKSppOp!+0Nh|mR`Ez6xAt{@izi{ME*TNf-L-_>0h6qdFwuvPX4+HS^1-jr2 z8L3cukLZbm4j?DEQ!O^&zqUpzx04Qj{NIVs5Gw2z@NplSzW1k^{{N7W{AW#9G;%hw zcQE=N9`Mmg)br6vBpoZHiTVlgH6k=rp5+CE!2K{Zpicz(LV8UXU?!=_`54^h$~cvS z$K(Fd5LyhDkb}M>%am=iF6(^%wzG!{1y`M~uiYOM20+!MYG5tMu~7dOOI%-qY$_>? zH3}}J9;!0cg*5_BMS)R5G^smxjLUy$$B1xWxZALC@uDL!?^KA(Y0$}!;2ZKvusgqa z(K7u!!iJfk@s^?2Ip2&V+^xNJ_bB-g29d_ke8(p2u)TG|t6WSiM%uW(86Kx_FStbLH0&ygm(D66Ctp1{A280ZIMrt)z>``z*Qf9Ipb z{~Cw=*X-s;+4J8mnfTEs-Xo8aAq}0_K+)kELXUz9T~O6;3S*}y$X64De*OkF>(Dvl{$*Gsg z|N8s_t#<-rD`iRvocHV9Ym4ix=!s;Gp*1dVc_^vpiNUH_N0x5ck0(|!@N+P zV=rB9_kN3Y%nn3X-s~aYv*m6=fAuSKG-3U=gj^0uJby#y;9*9MTA66A3M}E*gAHby zh*5)|@7V*kx50}zSdHL>3sJ0CE!v}V|)k3 z7eSVnY-=;!j=mZu2ShkHOE*hIh^-h-G=2>5c04)PWc#$ag|p%G0FXb+;IP__^+_TN zlLY}HQku+lSGxjy!@=n=n=EywyHG(E;tsneNLuP7_0*8Ci4826WBdZwxQyhGBu}l1 z+q}4b@L#>1Q@Yo0-qB`6+8gf_90NcRhL7}Dg3jtFElq(!kC=z%rFL}Gg|whS6i zJ+1%Z9gVJat^y^R{JEP!_<`zzc8^;pa8=Y^x>Iq}NvAAKNOInM8v4*tTR~Aaz{2U= zf%Gj$KH^ea4MkI@Y&vOJmhsk5)v?LVB?$_~gdFqw5X(h+xW5lb+2f_2wS!K~^5MDWanSRU_0cnT2#LU>_ zc1|FHgm!de9k-~J#fHVP*9m0h>M&0|SMJL*wKVL~6bq4X+O@m3D>IDP%;3*;kw((e zuZUEuszE5-!}3i?q?osk{tFPPvZG759a7?G){q-pRX6euhKE|UPcYo`u396_`v^z(|LLH4UX*V6ijiQ>YD(v>w0aSc2Jw&(ch-wwgHW|ey2 z4+k=b?WVnHd&{Ug7i3#B!4llvo#5{7ws4o=?(PnY z;O=W;;2mgm?fcTyg*^4iTPTuSlq*0^K^hjNTkBM16fw$|n7{6qN{={@5nR1N7!Y(!1 zcLyCRTWR7D8OT%0q!IHm#M}L8690XZ+nWk2{4VYadi~GIoF1%SHNi(3oc#Fw&vlRM z-#`0*5|bqVWzA#w@zp=rYju(zK3smL=ET=$`{q`;A)|!lpUM#9$`kHq|bV zq%t6 zYZ%1Y!6uG!20v)^gy(*|6#_=j&+xr%FJWgBrMiEx6EKLn{7LhQd0C+EemtwOzkQl) z|H;$*a6bAN2^fm&Ihg*-Tp;74140%+80e6aipmVW(v+8z?|thA1w#xaP(i{bG;H!mJBy1 z3gaxm8Zs0LFLhEdLiF1%cWUpZbw>MnNJ?*g7=TGiZzlSEX*9_8{R|qV$JncINF=06 z+1A+A&~#|)va0oc86k0$>1K9SbJ}?{7lk(|GpjqCcsARSGu#oQar5F7XJcPN zEj?1A#LY%<$}aqS_&Xw9L!d>-G%{X%(t|NCE{ncxSHc?{Df3#Vo>G_aO=WJV2QtrD zI2ntUm43go6~_nyohxaVE{eA519LA5kMG;4LDuMlD~ zWAZ@b5yTbpq}`_2W!n7T8f>afH6o}araEVng8JHn1^U6djNKw*aA=fi3LK{waE!ID ztFplMnHJ6tH1RCWYTH;YmJ!s7AB@C_;@Tlg;|$H}uwEd*rb4?BZ;6LoC2lk6ZgfVhNkrOskOpvST7~|7Imp>n*y~ zl)Dvd`iP((B{S|WMcya=Wzj(T+sW6b&r3qeGbu^@raO z3aP2e-T;7by<6Tbr(|TjzPLa0!z}-1t~AtL>mnr+Z&0Gx5hC(6T>R=E>*4mFhUxdH}QX6lAXIn{Xu zm(dqFcsA`Mejiy*T;xuh;0NK9_?g+hIU(I?S>eRg+6(4a;!CP2i6oqZ3Fbx6(C*o+BO4EPXy9VLScax3H0&U z3ZaI4TV|9BPYCcJK-kc^RH_8$85x`s;jqp&xe%(+PcGSbHkUWDMCF2WgqIV3VFr&R z+~KfXO4Vz(B9>6Vrtrlny&c$PyDyzKPP3Pqx8k)yvlF!j3XV=f5V<3jMX|pI49*$? z_e-2LhvMx~ri=v@@4w*B@G~~PB0jm-m-*GTMTG@V?Dfi~r5+?ba+E5WYH;hM8ejcV*4OufTO8qrTf$noF_XK@SPpwN9ynk?nN|AJ?n=xLA*Z;nsUXe0u%ezYq zH4ljN8gZ{Mut*-Qf&#E6I|Of;!5h2|t?Lv+d)+=^k3&tQkEPKXefimIkN2nK^{g8= zwff^XV*a;H(tl9Tgl(KYnj%?y!;eX~;lDt%jDPSM&~y1}sE-$M#9w-o^@+6TzthVj z1^&TjwD`qNlP>oibWHaOZ+GEuL@~ngVA>ePWw3Ew?~NHUt@CB+3~r$)NAg5^MS?~O zMgHWb{_R#uXcO14sf(=%H~ibNGK@&5$$KR$RBRJSgw@hBrR4srhraYa0k1`$wl&0& zhb66uf(%Az_>0uLB#meej=7Hc;d-c>Rkr8i;j8j-@uHTg0JDN+z6wdz7vOCe0n{jI zz+65Aj0|09-WiZ6(r9$@yOj*Y^BV^vvKdGeAvw2fzg?Mxo{qK@Q?x8FhaWJS!3>Qn z;S=rXqUdbEF2$u|5tPc>16WFZ_sfjYz{tlOSAA4qHhZV0mIcz5Ve0v{BK6e-w%RFp z4Ln&0ej}Y11cy@-EJ4UXT#8`ZDTTjC3hb^Fsuv%UzM>`52<-Typ`{T_={d@Z*nczWxi@YaIXocA2D}{IVW-f5u^q~y6Zq}H$ zSq)sbcnAPeVU?Q~nz{=0!~*%u9~7a99!#N`3FQgx2=%zBYs54rfnCO>Jp+L_2#hEJ zk(+4aKm)Zf#FU61{$fF%T7%^JrhVi_21>?JLzrKToaJ1D4LQiFvtmhy+`|VDdi4Bo zVtV*+g_t6TuL?(biN#_|5vM~9h@7=Zq}4MKVo}!u5u^t5#HArq&|;BGWQJp+Mrb9V zuQ=QNs-rmwbx^L9art^(oLYa_96!WFGd;9M7dX9u$wED*N7Eg!lUMIwwnk<_?)XP% z{Vd!z`px;hOOf+?p9ANfoyLGg^3Nv;X9Cy>TA9W9Hm;;8i(UFx7FPaz@ylNz$Q`B1I1FU z-|MDVg6ep-N-RTvJd>!UZJ3s;$#Wvx02NRmw*nqHwu*%GaB6!?mS7f#s@ST2%FUsw6GE zk6hD2L0d{u92Uj}WtouaGqh z(22KBA40IKG?pjOdb?2lI2l{yD9{lI4=ov1`wbcd8TPd~7k;T;+3|Uv@|&9Gg2vcS zhk7O}jwWjG$P177s{!Ltb?{9CrXWZtkw^~kfl;a-sf(q`lum1X?M&okjY7?ISxG}D zrABcxsVvuv17N(V9-*v(HEtt$5>u94&ZFr7r>djb1Q?Ysr5s09G6`d?zNO?DxhYON z3fVXDyN$dLGlGj`4MB<><`hGHm1<>xw0uNK0$b7)G^%xNcAQo`Y#vM|2h(+ZPwDM;Q`z)cn*%vd5R zn25zM+teoOJ2LAWJ6fl`1dAa$w7MOYqCJ$AS_V^@t`TbRVdpcYMSFv$dP}C%rlE8< zB03x=DxVYL4G4S*z|{<#?GAhkSNlOE?#jN9?~SIG6`{^%BVo;8g*_@ZQ%=bNLToe4 zqwuAHXAp%z10vM{{nWjVV?)Qjf(Ra5`|$1Arf(v{EVyMG#;44?&qAJ;g*f=oxD3zaZxtk8I$2#2 zBTq~&N`vFe6Zqv2&N)ng%eThSLbIx0i?)W>fy*}s9Fa;gEUZE~Gv^fF zdv3_aqCpn2)C4{>R{huksbA2Yc&=o?!{2n}M{W3mqBME@)IQ?i)sQN|h`K7OP?lX1 za?U#OzGiy_lN(~I&HWZrjAu_s?^5U%E8{oW+H9v(qah?Gv zq`YMw$`R3-sm#jvlKK%zm+SRI63-EUmnmkFWN{__D-Ghl_*%_ivKRos@Q`VXk(*e3 zkWI4L;fs)JkMZ<+DsGUki&ya|oQOC+e%KJdcM>i-Icp~v>fj$5Sb$1BC~jWx$1=Td z(B!UofL4rvUayN_xSyr>yn9L>yHTY-PMT!Ryo5gb9yGCeuXEK?gMs5-0}#MlYc8@? z>ac}r&_k)Of~ zQ0WlAXTC%|%b#18Ed=?>xuqf31WGNzu)*uR<#YnoY*(`$K|RoRz8Luqwc`DpST?B> zpscwm6)3{Ni+F^*LUe`!S!}^pa;Rta*(}7C3^UPIINb2JRp@t`oFeo}h8$8NIs+jW z#`GT~wINXT^f=T)Nt>MrNctFuUVzU(-ZMSrx@?+HkeGp_42Hcz&<8jzP4{QoYaXKh z>PxJ~y=h>k(T{!%6_4ZDeLtwW%UHKtM75mcp?~Y}q`xou@3?)hb?33q>VEfySJqoc zyl1b!95_xheZv2vM&oO)9twZ?^l1nF@7NaVe~-D9?2U~6t2zh8O2~d#&J4UyKr)aR zLwZ2zL8fi<116NjX;!k2K7;u$6T3l1O5<=qgxG*534ch9Q{aO*uT#O7C@=Nq*I)M4 zQ-*^>Fd2Er|^DprO&Aa8C7u`cGf%l-DE{lIlXAUyF-Fr!qS|3p}yi+C30fW{oI* z66C2oX&m+-kE=|r9gze zP|;FP>a*CLZcfXdCs=>X0X{3MfYpED4=$#*@$wGqKmGiW#b)m4@M#!+K{q$&Jt2}n zfLu@a$2c?!bUSP{$1qwE*`O>t4GdR@u2!usE5qg2x8%|KAr1xl!Ga$+c2I!4agRxR z?BOF3{$?swQ^H5lsPW1O!jTK>fchjfz-1+PnP&sVQqZ%&2_K8K^ZQfAV9|_Uq1k`sPH^0ta~?jqF9mMTGb3_X70EYFmF~*ai$%DMKi;;R>NQypp=IUJL z`SS8q>Guw|I}k!c!k_FF`tp4)liL z5JoWO{Wr}+USWD9ArxZEL(9W95*VQ2@8Rl)aFIyR@MPV?lAC=m8@J~3C6+&X#4C1ar?9`QH37l0JGYOX1|1= zoI43!B@+*$!$_;i-taH&!7-ZE*hH?X#kP%kNoT$8ZE7eS8Jm2^@GGBA0_(jt-~D4M zs%p^-?Tn2DwxG*^4x41w^d~9nn}r=o>+eVcONlqt;lE5M>jcM3Q&r^mN{2JJP?rg{ zX%%rv>p@>i)iXA}>6}K!t}lIW-}d!6rnL^P)YM)T#%VWgse4|VBr=h79?C#MhyxjR zG*X8OY%{Q*`dZs+HS!^Val|?N3gc{U@&alPZP=3P$A8}KwM-+~USK!;=Y^5 z@v*?muOBs6UK*JVQ%*FFz`3$srB?is~cNTiPz#=2MOin^0k<`j0>Rnd!k@MG`$*)Oy#pa9cg5)~6PjWyFLd zUEz$!rvEB{5ebRLo6gEsWyAViV1gxnPz15%E@(!OPu>lC@;VYm;A-(Sirotnm&x`f zz+P*7;6qeeis?gKeZZaR@uE4U)0n? zd$&0+aE4jhGo4Nf-jRDDM39#?lWNOC4AY*#hcFH)yvFFV_y3$OHY70Y1boCe^xv+; z{0Gh0|3g~}?v_7)E}VB)Ry=p#u=+GMWtwANRKIrHe$jr}9yNb&Y~pO}Vj`U=>D|G$e!uqq z-hSV9-);kJJMZE;7yQQhb&SxHGSEY?kuLCA=)v==&eu&ULQj@JDZ&?(-UZHERh$HULBDaK<~Q9i%>70$ct2OhscXqZvYV)Gf@n79IDBtx8Sf+(rN9>~nh_(|V1$|{_RjVUJedup_aa$)35;vBpQqvPw}UDu1( z&}yyGePL?%TavX~q>Q{Fn(D2Iec0+N<68jgwc#yX>b0S*Rce_kSNt&e%7?FEQPs)D z3?o}IX!}N5ok@l(VRR!8oMc9xUu8m;g?#a$4a)T!oYCOz^{X1gP! z#D%a1v7%IDkxrU;QM3LsmV+fj9F189%!mUFC}htK#~!fCfby76l9aDm$x z|1yS>pK`d@tJWk6g|J_nJU*MQkzu`TJcHhR;ZP28w+I7xLyXubMD>xYw`1Exp(HL= z0I*(cYwzZGpM-+yE=(P7zp?=)vdts&#ke8IY>Iqe8o;`~rCQiq71@#YP@4N?ZlzCF z3qdngzr8ws_PgQLYIqLt!l5LJj1YOu7GZORTuURkK>OMqSJO^lATP42l$Z3P{jf)I zAA78ZFrg~s%?s+6xsmn)iDFRD(RW|0bsiS+2-et#uI^gwm9+TAHyCE#P~OKi$mc=J zSr&Ciu`TH-eHv1rSX65~IrFVzszyvz49Tuf3Ek?KUPmvZeK8m&NM+y{Bz%tLwb_rB~Rqs@)3fHlQCwa~i&tz+L`y4afIaS#W({ z93+jNHM(5;7+&q&QL{ZG&OS1R3;@GeO)71($6PHnn!(&iKI9acxwitp?fm-8!2YDos}MHGT>KnpE2d_|;G&MoudGCb3t zR)!F*GT7(&V|_~3O6 zSjqsZTM$aK13{8h*kWK#I8t$U>V+7Ah~RcxF-MMt5c$9mS>(5V+S@>h7HQLgX|`%g zJ+(4f!l^-eq@Stw>_um@Gv72AVzhrIURTCkS5C#XwPqq9jL&=!^;|Q^OXBY#jhvZ7 zJ{i!LrVGtW7#UUaq>Cj{GPa^T*~+x0s!LZLLOijT6~{Qy==>4YZmuazKjEH z=2^tOZ+UoBiAaJuzVf%C)HN--Sv}sJl{^~n+Y_lFhbHVGL>7!U=!DCW)N(B*D;?5Z zV@?OlBx4BL+VRo$_tx`Y29oxIER_&c^3d5RG%v^)5gHGw^zOiieY&r%pI#~w_FT4A zQhid5E#&mgu=lFWT_ILYstoW-%xX8OpJX+EA-$E20~aP0v-e{UV44~CpgcjZ>zn*k zOdR^SyL-S6Q-%e3^@OnGjcLBAN24+|cK59q8KhPQ;(SiPls<;RJM?W2fnUmYy3+tm zdC0RwrEV^fGBsYUaC5ru4sZtAY_|CYPQ&QYAlEks-Y*AIoyc+7Lu!wgl1QDWcCiM( zTeY^)W1qJ68l&6SfBcb{Hqeyp@Y(u_F&g2$TEYFzri8xMl1iNL!^|#a+5;Ye$a?nVu*SZACC#o+MkbX# zRd1gvC~NPy=JB@-{QA^l6=4_@!=2`rRJmU8^=PAY&IW919v0YNvbI>$d}0(jB^t9H zwx~1dQQNRb$Pq&`2ki0K0J)+400#`D&d_0r!9@f9>qH6an$%rxjmA~+IZg>wuBdqq zEjj`zOR_Rp%S_SH?(h5tj#!{Gztgr8ljmTN;xw^21Y&Hr>ZUZl zsVgzB$HQyLRr-^FU4cOZ5W=woBD3r(;L*3Xf~p$7+BIX;Q)k5FigGKuO|Pwr{Y5sX znTs>{RjWFKl%0Q@2gKUvK%rr~`7{3agIJ9Tj^#51EQXpvR(PWW`4WH!ljrBG?Hbuu zfG!ZEIwi=*TvBKyW3Hl$$?1jh#(sCES*YY!mTJ z(ly)z$@rlI41$EauQJf&hom?WkzNqFikl^F56o$ft-aV#mK1(t-XY7RNA8i9FP-gc(PeXY?4r3m4|0?3>eVb&=t0 zttAzDNXipFXRIP$(NQta*aiRtGbqPQWmS=p>d3Eq2qTX}TXi&$OfylR;UVs-%bQ`Q zU;D5vPnsi1Q5xtgmG!Ng+n!9wYH-{X3o#FNHBmXEF?B7|hSYLoKDT-xt(fytL!?jX zC#N<>DpeMtkc-b_7Ha*D_{|EUE_5};`uQyuRpa#v*NoP+EdS_{RI}{ zlZS z@O!Ey%*#HxENJA3kVakfzMam_*N7}AUkL85?6|Y+uAv#&0tD8tNDl}6rbisnU;tVC z$0|iv)<^;xVcE%{%7@Q9pyZ9C^k)%ZZRDmUJzPJkvhNXSz75whwZ1>ns1SLEJj3ac zkL_??ZGC&ejyXW2O`xw}(1<{UPToT@or1#=O{m^e za6|;RLH;2eHPr_gVDKkhX%0IkOb^cbwM>b|BWy98lXoamA2rK7$s#?4dI3Mi?B@5v z?#A~h@!<34bWSjYkmU4Z+H?K4gZTeo@BaTyCj7JQ_$R4g<$$b=;%)uCS)w_CRcR_! zGG1XOf+b%KVK@vS0QgIwC{a*eoi)kWt|e`8)lq}@nOs-&^*5boC#C{UM$Wo!KmN9C zWoAv&jAJ|gJ@5~hd=Gg;^a@1y zRx%Miw}92z$+2A50}T>Vy$}r|G$q0k-;U|t?n`jxKIfFL<2*_b?ZF-_y9)$hE+z60*HUAGAv^Hgq7=msJ=slJd^Iesm#y0LU&+Obud?K{GH3dh;@4TZ zVku9vnEj)A!C5GEF!cnOCoX@cF#~gCA7>p`zZ{(gBIdzVh_uQwqYgDDr@~6JsDBjy z)S-x!92&Wla~eOKS%M*N^qgsxg5yNMy?lMzCfe?zcAvPUQnNMaG;BveyD7>&Lru9# z#xmbRQ>9|V6=^Sbiu&vd?uYEvQQMi)Zr~0m&}d(&Y-4@Bf$(fPvqIPw*5xB$Kwv%9 z)rW9f5@FErgUpNBbrN_&Kkzo45sp=nCpo8(pdycLNYIk2{$o6^-3n+)900!(b&#^9mg_jk4lIqP~APe_{k>$UY! zN{gKz5E(d(!e4q|h%X1EooWLZ5^bELf5xBllE9^3e_Pw5=X9&Rm)fe@s`8%+9r!9i zmdWgVF&=lo*_EcLT~XL>E?twxCY5Q!v$YmGo7Rq~gUNOUu5N z7MGK0{Qe3y9Qg7jEw`gh>c{J!<#ZAKfimTTYKZ*cmH+1rzW+d4{J|&xOEs-a_|vl# zxZWqhY8Q8fsj;L0l^+eJ(BN741uEFyJO~UGq}R?aQFrHej8*iKq7PDfH2)F&h8Ur- z1PB^jXaGU5TidaTi81;1>PX4;`=ney(EziU-_Jq$t>n$*T?z-!`L4+V;t+3KElgNY zP6dqF7!@+V9O^aVicu;f(RjC#QHlT+3Tvhp%F?Fqa|lj)c;Y>d7Ay;w5>}e2e)*X` zKaLa_;CktCCoqFx^gVtlkO zWYrdJhq)%=K&)tQSM5u6g9xjRR7iyG3bw^<=Fr;dynrh-Wu8nhYY{fYj5pSAcB7yZ zPNf}VDW0xm($*X-4f>~=`V)z;jNHgX&v1QJ^p=}S5w~qZl9{{#<2?1KYOMKf7;)*X z4Q=^n3qcBRXf959S|d^FkI92ER|AnRo$K)>>lV@O%Mh2uuv>hS1Y$7|9Omel+Xp!Y z8n5g;Q)bdX8L)2SiXRORVNzzW2|z(B(kg-vZ_Wtk=(0}}jmM*T%ouepXopFxlh@F$ z6V_OgxwWAvrT0LFw4w4FqB&Yah`t5wXbgIC(P~?XD{8C61ffcMD&IV2zSlM~sin~b_%;3dEY?s+f`V$OP>lHuq1tB+lXP1N2fIVr-HRkIjGfRpnY)N2ve-QI{XUxGF&XZu96jFt$-U zJ^QW)n+<jG|e!p@Q6$XFQkM&vNIZ!FbLyT z#PEjkiv=kQB-#FHtVeDLXz zn5>xS3GsR2zUzsf5ieYYRiG5Z8=+WGhz*ijL7ogMbXmIode@)SCDQo1I3SQ7BO4V8 z68bOh?k8UO{k;i#6x-|F@bfAt!qW8+*Nv z9?j>4{{zqFtQ)}3fvsVrP|W$j$0rwn~T@e=>Ovz_j6 zeo}MJyT7LH^7iuFu#VVC(Jo(ADyUkOOH@KsAXq$D@}av9CZNY5`T*wu@-zZkh^e54 z-@X2F4BhhSKf%Oo9GJ0k50LiBgqT}Ldt83Ej`UEC+9!;$;I$7-JzMhXI%Mqg8WuC) zMOrk5NwAv1Iy6@3;mu&-+1^Btfxx3LdXDcQ26S`=0_kF=FHm`>FOmTeF3hD{i9lFZ zG;528)QGWP;ZZE?jX60V(UaEr4dF*b9=J@u=&yxa0FV0QSe;>UcG8Fe$mwmLq=) zd`Rj3X{&4P@HWaD@za7x5ZcNgcO>)!I#%|zDPF>$OD9LSiBMQl4ou(c6QB8x2~ejw ztdoIEgxPte=_m*{&8B8E@%7KCgVp@#ig~zZ(9*Tb*A_H&00Q>+vcsKx149WjGEG7n zaz^_SVKYXTiQ)Xx(8I5ehF1y`kT-_ntxV(@p;nSuUzqwh$>JGy6XRGN?8A_U`(2cr z`6ukKiiWLM>QCZDT#G#coYvR}h(UFnWFaDB$GezYhzGw+=M&R_%7j`KdWrek!BASJ zwLAc$^1~oEF_)cL6_vzBL%(a-Ug>)>C~t?dM{yEE`NFdi2ZxkT-~+_y_Fk2pdIcGt#;biz zg?iGzKrVlRtV)H_xXVvFJI1&PeFHbw#SXn1HF15>ftlhI${R=E7_AIVX0qAV%+-7))=+sK+-1xRrjF{nxs8^QIEtFQMEwF9e*K|~A3^1ss#Fm&b9b>-* zJU@L}e_lO*4yc2iMq9dHIOVDg)5j*vyy0@fK;rlm;=YP|Bf6gkr+@Y%fI_Y~>r6@s z{Qg7>fS$3-hSrcnGe65ip68DjsGZ))Q~koRCQ@+)a{>Ryd|3qn1?0y^&g=L%sQy2L zL5_dFU?8gJ;P_AN!Jp&h{}yw6c&vR$PzT;Mp?2lvE?)2WiR1tPZp?7>+$peI{%)@_ zYz+mC>2mn?1ibL60Q^pPBOG(oi@-EXW0QNf_l%5;sEGy_lFDG3KW~tfnyD>R#sq~* z!@(@V#10-N_k~A_9B{HSOvsfgrD=N)jAzJ9RzpBFjPqxWhEB94D(T zXzRf)X7E{hX_arb(CS5=BbuqCdQURAWog#a({wCcw?&`8Bc&E_$D4515~r{V9SvUM zxQ%ABzF>DnM_y&)VBR=PAPe;D>QM*+SKq~%3^hPymjpS{LPB+>gvn!_^S(CT1V~-- zTYGQ0A$y}JrM(#gdk#0R3SF(lR+w;Jh(8>i<7+c2TcfO=yb_l9bJVfCc^1K8#Qe!v zz#m04Xb^Lv$L7M(^UV91rezU-P0JGk_lOAjnZD;RaQAmIUNOl1_}urvYk&e`I7D{X zjuii=qS%?=Kw9SmgjN3SD(8P-O#PQPjqHb%*x1s>Ma0#>$o9XlOgTjh{P7}#))h>1 z2s9AITivL_^4RDw;E`;|$jn<)>uB?ToyID3X61+c3i;yW%Qws}Md{kv)1I>Wcn7#@ zZ|CFH)AfxEN(`!pg^-e(6NRk93R&%>#nN!DWyWUr?U{7)NRrhjY!xT*bK#PhQ{Wc1 zAN+6@;{w({n|Q|M>mkA1a;;yr&x!Z!nI#7Pm*BBhA1J z+3$vKmU?bImZi>pTLnB?b4RB`4aHmw(e^3!t87zL3)TfS(h@vL+$l}9`nPaV^xwbXKU}Vj4E~6*ztj-_{r~@d zgfad@4J?2%@UAGSxg_#=1b{-7dq*_eVv0xuUN;N~!MZi0NUJt%(R67Le&y%A%np&9 z6vhX<$n`rcStSjYhX9_|XP7!1(oRP!)^$35LMy68ZK|Na=TeAW(ua!4Q}>x|y5bOq zlOps(CdN^3^ZeLA(fpP;Lyb&rqDH1ZUY%~hF%fG#RB5PgpZ@6YkEvzYRICf9in7w> z1n#n^+G_=VeL_`b<5wmk{jD)r3hIowLN~>Ws1Wj_Ww<>L9ujCeiHB3Kq9 zW=HMpbxkkpA$RRMu=r}dLKTUm`m&{3fj6tE`N1(jv6#k=(kiNU0t#M*BY~e6Ynr35*J?CplY!>+nt2`8+)1Cts+*L|m=`<<@>;mjux5h$R57c0@g{Y9QQ@sh zN_z*J|Mv!+1(2Cv%3~wVrItmHq3R_mz>IsWdiYA&Z}Cqp&pw~yc(JjnW>cGlK<{e9 z_aLIjTBd4y>hB`=T}E?_Br?|-G~coE4t_ZKAv}>ia(_A?_kdUsx0$Yx(14$EAZZCU zJtKGTAiUA%KOwv$PJ4#gC4L}&Fl|EY>2(k$dWMv=#^)hCX-2?p`$Taj;K;0P`Xkdn z(++qSgJ7zf246aVOiBr^!nGv;oguwV%N#w@F6QF8U=-y}y$bu5aT@|Bq#DdObI#yc z^S}fOg0E%FVcTu+U5LsLnT*Gj1p(_OyDobQ*jj(Mc5MP|t3T9$pp+ zBAa^nWL0|VN$^=SAVTBo{GAy04atxM_bXkAZ_tMuLP(1~XBUmJv5Pa>-D5M~hOU2o z)UPNNUnnhziV#juV5%<@hBdf*z?l4ZBiAZU$OV<%=~U1DNc2PLz#;4(xn$Vcfvw}?5m5YXwfGMdwSPdcKkvu< zA9~INWlh;xxsNr!7P&;8Y=RANd8O!l-{V(cVPh^@6J)4=s+voboVLa^n*V#B>bmD7 z7_({a`Nt7g=|gLIRV3EMltYenHWON&nXHa>@8HPK+-&s5f7%8}fGR>5!*Z7gcgDDz zQaj=d5d{6brJqb8vkNcV#+=;%3#0vhY;4CEp>adcK7!pwEe(-od0Ta`Kj007sbue~ zP46Wbmk8ge?!~P?)Bi9?8khWVL}VD=;tR)~)D(M4yF;eat`cM`m)+Fbio}_}l8k&o#9&O!K{uIN zSB$hwb&UE8m2w@9C(GHRdcGsC*n6p%$mDV3=-8yjAhRR7Ch4?0cNn!bpY(&KPm&C@ z{oQWxWwY{p+2*GsHQC&E2QBhe+UQ{q5mJIeqG@~W-F+!%ghKx8@^lc~Hkzv5n9emH zDW{Eh7WTRpcJOH?n^jx+AQ`_<8}u*~WO-3m@LKMkMR0ThhJ&sI?ZJ&$slzo_aL@u=mj`|a5iv7>P=~8{&ck56JTRpam^1NNA zkpvLd_%U{W4ILV{lAGy+&kJp=T8{qZGY5GdB~#IbIZ`X5Y!N5R8(IAgY}1Yg#DJv4 zT9RIZ^4L~USrgOJgS?h8I`K3w>;w8bSmrdZQGXEM#dV}E0^SdL2Jqg4 z-}2Re-C#gLP8Da$0mk5OC!6y3EeCI%_EY?FVz$zc>I}wUYeu%V@&6fvw(Y+4utdCq zRtfMeL0K#V*(ERqds}zY+`)TK3n`HKe}h?-|y5>w6x2_cDO)z zwOaE({~4h*gv~TF0dng_wbhLf>2> zIHv9kgjq~Hkm}?g%>+}0cJfECiWD^U=tSkO$Zwwl$f%jS{7iF0$Wjk{6ee)Fq7N*A zL4csPT^0|aQSD=ab==?}@!haqHXBqxazh3QPlG;NNMU;&t7_cvS^ zZB8Xe@~`fBr?r7hkiC-@1OdE|=&<4Xot+p85VXWrx?0|i{@$Rfq*^^3po)W7$vxnp z*X$M>5J1c$MNn{{p}DTz+){OQ`EHrvIdz4-<__i()gEB8anXOnkMxB==dO8VGV5uf z$UME?y!Q)?L6Hcb+K>izqV|sZvX0JuTXfzrQcuiNY-OOqgw>LT)=D+&6{A&^b44(V z`wh+0oyOaHUh^s6Uc7nEo|3Y$WQRhABe$3|6U8-3auO#S+iGGFQXbI6g)!aZQ9WS!!dm!V&~ z!zwC`6q;Kyj!c-TZ<&zV?LV=(TW~@ej-5!-$pE)Y0)~L zVDN>JpMbo1hM?^pT+IxbU^m-sNm_Q<(&g*P~Ee_UnZmKyhK znuKwP-AVEO!V1FK*FSlF)Ik-An2%Bp`nRS0KltT;$OQj_y8rF_@bT4O)jUI4TM=3P z;})(C6G;Gtj)h9!6gXsD??Y3wZ~3685jYqk%4{%06Sf#RvN>aw?njH+&9`xEoq(25 zC+W3Z>~-6xQ`55ALlXT1>T0sVW_`v)=DyAB?eV^%;VW@iFlE28mV%u~UtVadzZp0a zlridx0)4?oq`wIG2V$jcL>Gf`$I)g-6C;l#&)y0KyVIlhgM+E!i1GE`1ltmK;_ngv z;s+aM#(F4wkz8G%a2xP)4-%bZ&v*+uDj#aRiY?8@XBo8RVHZbJq z`N1dJeeZ$VUmJ+R!rLh3w=p+-3V9qIUHqjuyy|`HCmvrl)4|j`;z(s+fwPiNHK8nt@d^i5Z)x|t*3DaQ?{%syFy}U6$ zy~!L6Z$v9cfmSu0vg|{Yf%fcBPOSkx6X(Hy72L0A)wZPRZnQ-f0BB*acQ zNUl+lQ>Kg>V)%UqCpU3FF^1F>7CS%vY)5vzTo2~!^6}rd&pyN;+WG8dGudR>+I|0q zKFHDRcg6?84%qv|%TF3;cFH=9slONK_$#tUkGYb$6ZC|e(4cm&p(xWWBu854+R|Ck zj-=%qyEzH5M6oLY^1QD0y*l3#|MH0%2I&4$ zG34+sm-@MzzL&hEpw#NdgJ=9(I)@?=U;a2#cGs9pfR`?$Tu@?;$Ah0`b3V9@@eId` z>k3zoW2qV=v?!PlB{*!=;=j*UE~ZcBuU059$s&;lK_j?kvw{fs3SKsY zJv3R1<)bOp|GzkU$LP$qty{P%73YcVify}M+qP}nwo$QdSDcD%+p4g_o2tDJ-uK?K z&;Gt2t39o){K}ehj@d^aqxbQXID9~y>#RR6vY<{x@ZB%R)fp@l;&j%~1i)#7u4}msz$flaD$<*cA4WW$ezOEsGw!R}fB?9t66mWfAkc zbSo-9577&hS)=WRGpD>1xJNvH_uP28t&ZWpBm3FEME8F~!NqT3ZSQFJ=iG{aO&Ei5 z0%djrbrJ%Vh5lOJS1a(6(bw+a`IcWkyNh5xMk@r0a`2p>AOw0h8#cQ;jqq9ggC;tG zznYh9tCt?Ho}Eysmz|fDm6sM>%=pkpF(bdlakiiR1%f3O5daB51mJVm_nz-vkPaW< zeopL|G{(p(+yi;;zT8slJ4;)?h-EFa)>*37qaEnwm}OmKYG- zO&>%hy+(L^MKa#l;5WtB2~BJ@<-|8va(wC-Ya?3FiHa`pc>Ud`&s>umg_X4A9Pc7%Gt>r%?(0!2t9LpEyYaj3Aduihez%hzC6A$p3cS1d>7{R&GtKXntF82H+- z3$)`0l?#U|3@4gYPGozO_fr5`ShK+4nl7x`sXU(Y*h%={7IzKtg+j9xoru1 zw1EFEPx=sQu3ibU!K4$7sA%1rdiv)!7~V8V=IblYWRPJI-!%G3?}r8&%a0IxAGlYivo4hC0f8`l>}c4m#bW%8c0ZE= z`Ym~ZfKCU17vQ>?8dOZl@vy{=>@5Q?{;4e3aq85Ueg3pNyN$H$F*2RKc*cJ&7IO$aqKa-2=3X-8GdBO|Q>!Gm` zik}b+Vp5eFBe4)FQ*9WF%mEby7Ue1~=~g!h+^94%@%Nlq$LapisSUdrX}whLaVx`1 z^jfSOD!c;{^vCJ=6m;_i@e|z|7?mIB`HKp)J(e=p(bDJgwp=nZ_2~+bNTF=}ANd*# zaiUmvGXIk9`altF4me?TmLC%F1;$|G}tJID6E zLC@bW`2QS_rT%+7{=W=Y{`ZT2P;h@-{vGdp(rlY;Ja?(r?HHsi%}L1W9P@~ zg@p@nJ%F?VWvNTHo@hTma*?fx5RI#BsGDSbI;R+Tv*;gHjVAW`+*1+eDa?2`c+v!{nF8hoD&q zG*ey8kn~JR2oB_~_U|AhSjt&Zr6Eq4Yt9_&n8q2YleV*%Wex0!Y8Rj0h~}SFgAb@y zexQIP7(#;IWD*y09${qdKnlb?6;eJN0Rv+$plI<1p|+?%5DJP(T|Ixel=XrWsF~_~ zR~%OTuF|ftH4ND|@gc6|({GMH!2db3sqI5Tq8fNm_)Tj5)DIVSiYbisYVdn{ktz-$ zM%!maNtHryE=?zjzZ4Rc)i+v$TVm&&r6hGAd)psyM1hiFu+69T7hGE2 zl_fgJ5Iv#_@ccYNbO_*1b!UNQ-Cb*0`+6cgS=zMAI+OlW=;9^2MXOkAE-$qnWs=qvJh5Wp@xolet3qF54 zM9&(F{EjH3_3PFL{?>FLFvLYa{xu|QgAKUrpq~riy`=sFv;#4^XvUN8T1kyQ*C2=> zC?X!g-#N)lJ}0lMmPA-$U^k3&JDK{rmfVSPF3b!e9ap1GH>A}HbW4hY zv{xrp(XmB1;`?GFi}JZf4{P;(eiZZa5{{i^X2GyZ2D-a|{zg%H_J@V*3lOa-ve`6% z3AUSz1)sWiWyT3|?S5^lw~^tsRmmB^Z0h9;M#Ju|J6p;nc$xiwr@t5jaS zyZ8=_;85OWG8=Q3HYluf%u{5N`SYXVO|aSmR8~v7g=}c-7_^_z9WMSzg(Ey`qw2BD ziIStM(vT-_o`MIC&MZymcFW_QU=)F583AP2G|SMN%ZE6x8Kch``DMCcWCmdLJ7tIS z-a03!0yy^}ihZ4iH`0q&AD`jdg?kcSX$6gxrsAi|L`Y4lO$HtGEEO-g4W{NHR4MvG zq#r5P4t6D(p) zN`ms&tCicSy_&uh46#jB!b#?`OcSnIk6Uq-R0-y0t{pK?9%4`~AK;nCth0_DKLOp^ zMz%DCaosrO{H(xV7fI1uGEj8T#i;rA>mW|Xcm@)_-)P5wNjCkBgZQf?^2_?-9c&T) zJH?t9_j|^6(A!4~kg%}LmrAr2lTvYiTYg5mTx#0WL3Up~Q&A2r7Ya?ZJSg0*VEQcl zNF9|g@u@ReKgW5BNZuCi2T6JsdmF=$k;};E6)cJu6>5-s(Y9>^virMZLioA^f*9p6 zl4whGvE?!7Q;bE7?e{>vH(UG9(!3mJ;DRXW3H@(67^yn&pEamg;#)T>MnkFAoNRSo z#(5eSDU|If!)a$~LTBp?2P=-+`y*Q?p^KIrETZ*%Tpr2Zsc8xU;lkl;tkg!bXmos{ z10`A$<3_60xPC5a7Y7gOWh{i^Hn;mB3Gd zjVii)(1?QQa-sIrXr#W$f)e!6XCzM9Qzv{+VY0~%kK0~r?~$KQZg0Qtr3NhUWu7iS5!sJ z&Vj!(1Gh3K6TwyH0NY5??eft91KI&6p&hXu=1#_Vv2cPf(CwG=MM`{}J_33Igg@4C z=WGVFhGeI?S(BbKcNh*hn$WS|t}hm>L$(OB2E4S@)x$eJ#&nGVB{vc1eroJ zV4RyhNb<|}dP2j>OA=OAwnaW8n&F{OJ2md6f25U6gvY0}|3|uOfCGq!`-56&fOY z)+S>wH3I|NgtkrDz*-p7wT0HAokv~^spnut44aXWk@`c5?j)tfT?_p97{pgj=k)ZS zVH`$MZeIP{&{oQUhVHkm2cU%JOk$^`9i&;oJq?0CQD95u+v&1e#%RBRs5M2zwo|+a zmcD4*4?&hTDX(2KPk5ae-fP)v2x}RJ9JJT!=zxHBY_|4H%(=jY_((7gL#a#AE<3sd zUKqSoA96KfdJd+q(c}6Bm6ZY=EP{ZWEa8C(ia3ryfu2JqT5=HvxW7KFy*FinWBYC0O%hmO|LuA(_!hiZ-PZqzf1a6=Q( zkJ59cfu2iB)fM^47u4zg^*n{O_PBl{_+~jTh*wxjgP35d2H0#sJUmEF!G1*$(l=uUskTu5|&uU)5^R zt#%}kw!jT_2=C*rb0%2Prr!Keo-nT-f{E*QNH1~N9M*azTIIzD#cJT(N(w7 z!C>D^b;FjGX7rlgr44@oMC>Z>o7=+VHTJJS9U!_Ito0tKHUAPZ{f$1D|5>}1chvh`!~XO4*Qx%q zK%lgtjHnFvYQlj+pOm-E~KjHGZ=7W6CfHMM<2T_iVq#nF7QId+f(O5rKDDrC3<)zFQil}!DR@lyr z_0#@aoQAastR~L0fOgS{B^7RDRy9Trgy5AY%R=;$uCQkxsll-Q zw)`k3P@EUzBw3cxVsWLH9?0E#luF5=syAR* z%Ano-`1Dn=p;L^PRIZ^FpU15i61UXxPGngkdmihXXy|wLnjJ(_)HEcoHM_D{mCgxAW5^#m# zDP)RR6fsI1g*Ual~M+`U;YO zMbv{+Zg~I?T7ZYCDe(358HJmE+yB&KBq^52nkL@I^qB-ydN3I%D5V_{QuvDFhc|z^ zd*pLEHq1kg2&+GYFg;1=&j~^WH&KLHxQdA5X#TaXF6Jok=h)4xvtW+2?ZY!s8~xCQ zEwrXjSSXuV1CKFZD8Svy)~!8QnL6vMu6EiYywfnW*C!sXW}8>Wuk6XucS<477p*fi zd6&jIw#cvMnWf}Zmyyf+ku8z~+6aU?dqSOf8P5D5-9pu|>G`qaa&FJL$BQ+&XTGZ& zgPBg$mwSuXeo=CKWcU#>uQhEH^Aq=1wD=%x71H`1Eg&HND!-!n?_|Y4*|a|=_!cOr zzE3}ednFd#>0`1Kg&j{Ck>N149U<6?DRwDFf+@*GXr~%4wY5DR*1~`M>XMD1$VS-5 zzynFwRznUP8xle^5#ijKn#upw`}z3?v|;&9RG=bM7RUzQNKaazBUFVjI7P z_@iRQv`sK9Me^ksBuC?rkaMiYmR8L0JaW--Xzsii@6QAf4`EtQiw%5>mgztxigo)^ zY*C;oYSS1mV5DC2-9Gi2QCKqU(xwLiBAfs_;Bj0x*G*0kFNe5CX1}G4x7rQgn|y;# z=X_!h0mFMiBn7ty;+&pNRB4d%>t^)IA@SDv8*HGBcW&qpe1;`yu=eiKV?iUM@h^Q= z3V;A~`hE?9LPZGZG1NxQ!=ju}`$xqsXOLtx$3Uuzk#gg7l42(HL5p&1{r&G>fgp_P~e+POw1njhhh;D3m+JD@0~QTL#~hPZ<`#tow-zCWBb z1{Vg|FFnfXdy9s&${z4ctMvL^P{AQWUOs%skZylT$^MPp;C~Zbgn!nx-YtfI%}DiJ z87M4~HRpLgtqE3(Rk(ygqCu{gQJ1;wluTkKTBAy@IQ%9DhXnij!8?IEa?)m!EtW0wj#<2=#pRajqXS>bsA)0*3n_8980pLYQ`6y?wXcZS?LODJ(j!qXzmOJA~*^D_vKpTuNd^1V;G3_5-d%i%?OEv#Q_EH7R)06{{krb@Ph zpG0X13Kp6SCdRl5G|Zd~Jfl8`5%9P+et?<`0F$iFCN{h2?$h4Hy|gYiKIX$MhaK@x zKW!Ov-uJLKvg>^Dxc}&g*5~J!4p|FXi1gkoP@zNoF=!vS$3zq^Uoi|yu3j{U2(G{1 zEnt$m;*K>Gre%_>zkn6Lxg0;TOzx%xjaROpw6X+^U##D;h1ORKIsQ;7wl^kB^` zBrJV~dvCEdTO3>R2DD~{$gF8ap(2SDq#3{#$UAq_XaeQj)CJ<7)?|53tJhxWGTCgM8wysYcp|zUYSOqXrF+mr=sCZX29AwDVbg@^mE5@EpC7vwdp4{ zRobh0{(_=suDyAdjU&H8)QUo+_+28mjJm~Z07|f5rmrr!P96E)4-!HW>3A)+fkiT_ zP>j7FadrGciws}Iw2>r_*;-8uXnkIV*glBB@_WfXng+ydNGnlDX22Z@Ji>{!zCovH zDa%MiA>qzQsGTE;<7SrtZqewXv~clEqS21#UZugQ#235N8ELU{ywu!;MI54x2-J43 zacQKoYJ*`U(Mfkk?TfcUFQFXj1MZpjJ{;7B6?(kf@`rmY@qZeMULqYzo@(_hU5GS9 z@&IMA={KGfl9#hn*dTcRg2E&Z@`+ndMhpB19NX+e&TnFIx>D{w|H$qVhyrcRG_T61j-0BS@$P?5B*P8O6Rld_G>=CdO0t zIR>)y#7n_}n5qM=wu3b|_4?F(9DO}{;y^jTCV~qZ6N8z_!gO)II!~7cCP)Aa{*Z2z zAhin%#o>K8SfC;H$@jzWda-z!Gzx9)6VTxt*m?7ZVMa1~;CoQYfTic^c_@hyQt^@8 zT(Zo#QsisJBS*mbkNpbTwCToz9r;&ZkDc5FE2s<1sEm{-^bERyky;|O8}UJSt)=Zw z8jqmS8)iUBtNuvR60>VB0zX&KLo)>QGW^HhEtkO7oqG*sH(!%EjV;?i#q+ct>>pqZ z(2^%(eRHOIX>SfrF5b&R2j0&-Uhz2t4<2W>3yKJd-eM9_vRN(@AtV+{sNeA2KFCOvKa?yjbk>AG%$XZy^oki_9_3%ZXZi^18?&ZCDm$YEMRqFa2TwF}z(-N^ z$_UZv!pW>_KPcOAL-xtI@s_+5r&qb3h|K~&YXi8xPd1G@p@MY(p?2u&G7S(k%e@H5Did+> z&u@#b#q70R{<+L3$YD9f_NVzhN|<>GnpDzH`TCd~Wc3Vy<}yPMzN?|yC}qwPXL$#~ zeVWX0D3eSebkbz0fN_A*HMHx_r+slg-9ml(@CG&%3LSM~Kszom31l)u5BXzVnIW zptJMk`2ihrTwkph1iCdS9D~}lxqM3ufOj+aohVcULifwC4gf&1yC6zdluuXy2xLf4 z$L%~BYO~GY7aBIfV#|ok`)r6nU~9&NB`oVDiPxWPU=IcOw6wZSuD#RRe=_p;LQDdyE(qjc zoM+O8%m@-g4Q-5G$6FOh+GhRI!u{P`cp=Oog5DDez2C+QY}x(0@N%B7XGRQMzX*4O z|6=FY!ArdMz^t>bECKfF!NX;7PEjX4;#&;OuW+vQ{`%TK$mUFPo-}WTG`@iSQ!G{GQ=IQLayw>V$uKCq7in`47FlBdzsPu^Bn zf2-e)bmdFGT&6<94$f1G zuU)c9hVQXoIT^tu4e|~Q2`?vvpHKjnRAg`8V$_MEs$=<9=|vXn3y`2pC{FByY>4fm z7r0$_FuMCb*ORM}*X!dQwj(F+L@#!f&(6m|ltKO|VXSENgtm3Q-c$@L%597!)GphZ zvt{o2DO;ntLC^As#Xe13%~id_8z(L7PrL79uQ_RJ+`07VBy2n(~c zL;FFkxnldfZ+fuOeovZ5k}0>igWgvLMo=Ss^yi#;dR$Ujq*|RtRxmJA)x|HEm=T8A z;sqiT?HpvB(p`^mDX!ZBxZ8wX+21>q4gh zBi`O=x=-|s(}Jmn#7%a!Ut8Qm?E_a|l?h%HCjvN`T(QC=1cK=!B+@W6V@R-LcTl!A z^?2~P74d+==<1M1zGv8f!l6Pt2sdflk z=1rHJVn4a?@_mD_qGKUN)=%Ul*f{nMdP5Ee;F1F(Cp|_HdIurvB-vke*l#L(U5ZSw zBx-Dw@T@p+T%(B3yZ=xGNYnccH@}CvlfS%2{(o$jf3-*dYa{&$@DwzEWjkCmN=_@( zVJdKNj{T)8mLre846xtjK!7tY>Ko_8-WfM z4@m>d_J;Y!35iuT)h&(jq)^&d)WOAjA`&hWc2l5+%pR` zLHbOcTZ^yrn>X^Ml6Z{6Z3>cqn<$7_P z8iCsencBhFHcV~71=_3M?#Wai4E@IFv~UL5`8H$ku{t1qPcwqvgD)xrKIm+NXX6vL zmD@Jm1|!1FC!taNk7KZ`qQGiE7kY%AV0yb)TXFRmnt>#8IkWPlw@7+HTR8k;Uc`Dq zoO|LG5I{rh(nQtR3ljz}9miq@4E3dGJ&whHxT0JQN7@^`Z|sM^jD>$Aeg89WdGGi9 ze+$dUqG@!ZDTzr1255{8^9L$bL?{Z_`_aMcu|r;s-5TY121xe2b{6W0c#PY`>%#?a7QX6WYQrCyHO6^d`(Q0 zF(RP*3UAkpSGi9fj^KKAI%0}q+P_Kshps#`=ucfaNvIM-sV$`^|3v$>E8O=RrAR}J zKDU~?ZutJ55A09Gfa9=Pd9i$V2lE5_U>aT9yQm)&)!Sr!8K!clAf?O~bwpyA*;${k zG1L__*R^xMM=wxAFCXvA_?IpzY+I9lD<63H&3%C}=hpucmj87#G2MT^oBrLv?~kBT zp$g@Zu891$argA2;D}}3=}auC5$b~4^hnF1Tpv^2vMHhh)4`mIf30cPJUy0J^M~OH z9Ik`_(iOy^ixs4jjb2gxT8ag@81j`bjfcclsI`Iu9MUlxi*_8hoXX@`ll?f?{i^#o zS5^Ac*_AR5XB6LTcuU}Wn+C8ykl|eaJ0tJ7O-GVtw@pN%Wve$zwr}##5yWHikQc;b z`cM~S%=9eStIhN**=vvSTDgUb@mjLw3Qc43kW8EnkrN6eiDbq%6;KKhOw1_B$|SqX z2jSFAo6bw*PY#S8puq}N2z5Y9Dwqsq2p~sO$Xf}-0JTSVnd(KUKwOk0!Cw>D{>CW3w_?2Sf9S zA>r;jc%b!wyJl`UK&oVV6@C!sSqRv9!hO3h#; zA_&Iri?DTRqyW+rP~y%dVR{X0T_V+7^%uMcVL@IUfFM zcG;&7W9!Si$zp?V$sL$omZ>fE)KQeZ>9j=Jh$_FNr5G_*-2!l~r)ao_9!7_p&bfiF zq^NmrUrU2L@&V&j12BWHO1eBP%7qo}V}wrh5?sXX-9Rox&k-qMZSac8P39U_!?wF= zQJ4ltgLH3^k4B2WcUVzbS*BY;Ns)T|DLw;BDfkxVJvZ|~ihoxQTJR`P+mnHYB z`nYQ91p+;O%0ZlE6-BZ7^^Dyxk-=Wm#T$ii)tmO*KKb)AwCHWRWl_Q#;c+u57PLA= zi7Qh-Utw1S@$v$Fu2LJk=(I{=8-n(>gEW#2(>>T2w`rh{NzUzRM`(V;%%`bhbn7s* z(14-36Ob?(x5e{RkIICl`{4w)eG}#M}DtKsD z0werb3>sGLN;hmgr3b6rfpwIVT9Gf=#g^8y$8;4oF`R^4NnH6o%4iVIDFcaeE>|ZM zh(+*#xHIF4i8!d*-5$yoQgQ0>I8=inA|$K4s)>jo;8os60*kY;hjN-EaP_SPBftj7xT5FeMDmM3LZoKGVoi z0*9@qMwRi|nMyGDd*`Ed@=_;s2o**=5aa^4lUR8QZtT5NF-sdguX8=2`|I4{3qcH0 zUlTibfzs(A#DX*Ltn$C&&S-}Nty^RbJ6J`kQq>qRGFn}vs>bfSWLUB?j6ld(v_*bD zc5$vvZl||Wl~gKbLJzfw3e0l|u>~TEA8`btaLkj*+3id@#Bpta%rmD@7bqZm`bF%hs>S`iM@gePA>QLR8~URNm& zeICk*8V*qw7(&;IlXA(U8!;Eaui+vtFfZ7>*auE!+?mKL1U|kl=>l;brWuvbf^_0t z$L7^hT{o|_RZp8(hTw9S<)&bOrl(OSVVZ1bG-@rMM%|IhyCd3JORx@97-L*c6myRp zW=GoeuCuM z?rSJpEppQA%1dPl%WVhu(cn}s_23UOy3@Fp6^Q{p;Z;>Y2OunR8F8DXJt zM&F*D7w)$MaGoA%0i5d*+3k3;(FyjRxqN@EYT)Qe6BJW~04D7mdOz3TpV$6K%_Atq z0p#C=k)AjeiHHmdcSj(xs{<>E;K8=MHo(n12Wi{vfe)Z{?Nev$f!{rGEAdr4!Hlr@ zO^s8T{T>k$#jdEFdlX9!SvHKWu}AM+gC@7jFnX8`L)m?DAr;S5bCrtczy`H06^miJ zIRc!t3+MwH7~3o5mRx(`*yT{zuBbS_c;+*|_LMSfK*cB0{HuLk4SM!FJ@z!7o{qa*SNbIOxLSz=ICb+L9Io}|U?3Pw4Is`qh#Z?yB}mx__urbM_kZn}B&J`8KapHws*KNxy7 z(MKTnsx;!lG|_*5zKsl1N5^(o%fI&mbzXF58LIu1d`7H!|VeSc>?QyRQ z4~(e)Xb1tPZhJ@U@XR#%8Kr3jQ)z{cJkdB0YlUaXoo4?=%YN8>?6d>pZru-$QCw)) z;B}LMS_$Ni9_BFUV?s3|OX1+_RLud5anhPK%}FDa(+cZbs8GKX9`ZVQlbC$P6E6-H z(UWUWMcn-|C~a?rh#mNeXQl%wkpP?HVg+;IVq~d0Hnw};IK?Z5A%!OpwMhVO;iT+P zvSSi*Qbns527uJjgM0` zMbC=4XUjmcdpuq?r&B}c5=AO(R<*aviy+DgQhEH1p^2<1rk_hA<}fBa?X1vsSb)sp zYmGj7uWiz0%#rnWx&nJ)WX7XkX+Q{Gts*wM!E$Hig;a?kUm^1U2 z9xA}jVEa1fM{Of&XO?Y=JoO%)QbHnb^L_yh+Itnu5U62?yy*(izP;)qG);ymBNbRX z!v-&Jaqdkv^0-hE|32g;jjUg!wjH+aT*M!#(nid9l=USK7u)>f0YBPtGj1{ARH%<; zGnB)yQH%2JilsD@u&PSrE`zuZ*{N>eoRxi3+SJ#VN>!oHp4gbkDP`@^ zOK&TmgIB%H!`^2wmPz>79Wadu6n(8FS9y#(vWSCGu;EowVy73qr@Cb|0#PzuGK0He zoZNcBKO%dWb-AGLq~EId>m%xbN+D?zCbW$26m36P%RQ>t$leRZ6d^`ITv^#XA=XaD zba?Z9ZtpuK?9)iX+4X`xc>?y*gd73V>g|PC%>gp&qmr^hp4v#*sqNC7K6pULaomOp zY~rbn?T|INy3Ec8=LiNt32m$!nj-_e{?4!RpR37#nRadeWxo6WK`KlC$94&n9TEG) z3s=q@Ejh1v{R4YU(0~P>LW{ufoGjZV1RQ73QG(gRsQ2{qgR-0Gmu}e0yuQ@F&67>6 z(pK}*w&1L$`vYZz>gb?ACa4n>W=adS;*}JCOMhDH6ZgSF+J#s2gT~rBt#}&kv8*HT&v102s zh3Ynht7F_F%UN`VD;-osGBaP){~-Whs_h9xRU>07O8RpC%AeMmv`JihQiliSz6u-P z{TaSwpLPEAdtXsTs6F#48zJLcjg}bkbejOo=#8J45kZ)llkX>kTXqPxFASqfObZSQ z^W>)EOoQKfx-$|X5E^BtOeAha*<{>4YF{G|U8G&CT>-SwN^Nmf<%|n0%eW(ywwOKJ z44utP`bhWec1#f@7ub{@yB-?E1={JE2$BX0dMzk#xt}PQ> z>F#e2PsuBn`k0+}pNh$arP<{6M3Q&P{gjd03pX7>tVvzuyVW7rl`fRS)9P{-u@8mt<_H&RV`9`XnaK<4v*3rMyX|B ztI>~+B_G=>PObqcPBCaA1C*u=K#`Bvutv|2uL}zGyH_i;!^-y;vF2|B1;0h~3*I&N zZQE--Kn4>%q(zHg3acR?9OF}Q72Sw-%uO@sR|HFE(92n^*x64zj*gth#iGgR>0U0-fKR3Urfx;@Wi zb)DYa77J1($&89$idj{TaGao7#n>8PnkCxh<3Ru-;x!Be(TxplxZ{uLMc00TAA@` zUMmytbz0@QC-w`MXKyBU2XX4z@pKtd;uCuSdZq*^Q5E)2 z8+2l=cPb_8Hz#>{3Ncw@80Z)Zhf#UbMW?5X4T{6`4#IwMKelBxk@aSc<9AZFra=d= z+{2#7B*tw_wDgUL9Y?S%rRXdR#dVPw7Ba`*M`e$mrB_oz>=l|gJu;)1AsBwGCY>n+ zvG;qxnW=y=w!pVESjC4;u=wc}5;Ton4V<1a-Xf&N=i*xvg~+xrC2wVXWdoH+MWDcU z?e{Y#GeacOS$&|kb@s-_ELND7%VL+#K`QY`m%({*)Mf^b;AktuHR^7q_E;(&PLs*$ z8U{lBJQxM|Obxk`hrx`Mgv#A)%1QtJ>eNwUB}a*sUf0HcM75Vy^2P`{Sf` z(N;{){BEA7O`cY8PDy9qq9dozOCo5kb|M&zWqIL=p2H1k0c&H?iPOUEu>{0M-v=j}}^)<_;Zyx__Xfl~APWza<_Sk2|FV1YAJ8RS< z&aAIrED|a$gOJ&8^fTxKtDq7~SbXtZJuZAp=0?i?HxMe^(ZT!XE;GN>NZ_?cj#5=Y zeV)9fXw0b%8KGWDZX`R2&6vv-LOagvF?=_B9UODegX;4rW2i}QWYbh_2q0VnOw_g0 zL?pDLTsN1)=tr&*X_pvPiXYO_;kiZ9F5}y=BlRb$oD$Sj$)QB}*^WUEgdH85q8IR6 zExwEk@`5&zoG%P9;SQM;J!yi7^R9ukN;oZzfEP$NkXEg1ihWrwkznjrvd=fuIqazR zGhYglAx}f~5iNaO}CILbU}E zUr3x7x)NsL_8nYKHj#4Bi0cvITvJMNnj;h%bgWA0vi9A!@wiab7-Z3=;u^ityd=6$ zYyX5jqCt^<{6KU-Q=y4@1EU+l?lb{7?)_Mnnc0(N%(+xgLa9BdMsO8ZgFa& z>$T>}$=)B7jkd7yQG&@V!2vX4UUt!ymqVft2w)&yktS~+NGKWUJDU6Lsvdr{?aT7| z&ff``mjpz9qL*DqN~*#`tGKPho8b3Ak^FSvDaZOP^5Xmzx#HG!q;6660aWUW=JS!6 zwbs+`%NB0_J15M0hY|<$UtKkS!wdM|*=0gyLtXRt7k>buOj$1J-Y)=8tGGhRUg4iH zF|D+;`M%_zECeYt@qOU{w7A`ta?|38_0Qx;Jvs1x@IlwtOBYMr8&88L zn1GvVbN!Kl#z<_i05^HR#&8rY)N~aBG%Xgw4418+DqN+X72S|D)+5={ZoLKUa6lJ0 zcQYLOl-O%O|<_(OU;sA+wr>gYb(~#cGZV z)0MhOnB!g}iL3nNZL}K=?aMerIml&!NuF%YvY#RHh<1-#>GX--h&O%yE@;MYE755} z)k)ZQcr);q5a(}<HSL#^EWcHf78{z+v@+Li2gsEQX}KFrDt@I2ENvfIqK6q1k=d? z0~a}^tHE6muG=&Od|=VpUK_asZFM-CP6~wG10lrlNA>!^jdYb!P%gCG$L#60e0_5L z&P=bbzCK3cuW#iAHU>ro-lJro!{N-ybm_;E;9n~y$RwNa=Hu0p))M|u*iG$WS3=U# zm)wF@LbixS(IRW_x9=~bq_7aHCz=BDZK@F>U9OZI+;n9r2u5YzAYu@l0X3tNyFfAsC8 zD_JI5h?tOakIjy%b%R93n0=WAl`dysO4nq-%4XaNnFX&U_zgwe#GuX2^0lvwyr^=6 z1r?YBTpF8ex`Sco#&3)El7QPC2eSnsyc?e5DwpFeoS8wp@qO3@k2@-{U;;k_U|_XD z&p@wzlkD?4l*jDe3{Z@z>H$F4zX~IR;``d2G^dHPSGF6-lE^;3E(&7d{A-li0mdHC z`RA6F~x*2^X-=Igwejq zu>+a>ovu9z94bsF^lSJek-l4tlUUbV&uuLEl0wI z^pn<{YNA7DqR)g7Mep_b_}nPVRAZsn z-&Y#Sgm^;CY(bk~0nqIW^2HS#77C{GsX;KJjSaHHC=^%e(|{0vx0Z1t2TOiVYf~2e zye5Q?pLJL~Kzpe0N+-dFtzhSPj+3PYNmHUIg=UmVt*9w3`XyVDYR)4p)@tCWLA{jT z=@T-cH(Jo~GU}`dKNR?oLYV_^1dRAo(+dvH{Zc<{&l5;EWfEq(kWC0@ zCUQj!O!FV&l@J;8KHadCs#~f!;{t+QC5&9ydMik(cbG?$BWip~xFa?cIE<@t0B*qO z`o39;!)V@qwi+G5FFv|K%wbLFj&)UdMO8Us+5?pRH+ZPu$7xh9enl743_I28_lSyuAMV~UIP!O08=cs8GO=yjcE`4D&cse8wllG9 zV`AI3?Kl6m*2dZI*=wz;^X*i1S9SNdetx%~>%Ojk7=M+|GeS%_!9m z@}EV`sN8~rR;A()?mP#DA?elo)PL9{E)^Z^*m9)7BgcchA+ zO`T(aVoC)G(cbbS*H!?Nzv<3_dAmZx$oMATq7VMv^rjxhw3nGK1%C48TkNvT0YmC& ze_ug(SaMiQSoSav*==gZAc=WgRV~(Ji$0R~I9SB?DUDlTBH!c}H}3co*=R@io|a7K zxTdc0O(yb*Z*oxA5W07E#S2ix+b`TVq?nHsxEClZkFa5R9R)akqZ=le&kRvrgBz;V zH<*X>`$8~W;w++?!U!#7@ z=x%4~{VB=Xnkr+=6ec?IY{dljE#|O_Qig>LU)cdCYh;h*i=)$DCW(nNewc}DG__p6 zHck>I9wzmUA&gm)L6S+b#GSTM^_r_(?b`DUa1BnzeiJ#lts#>JXoupj*coqD7|@z3 z+BtkaRbBArp6o!WQmVmtr@H7JpxOu`FMATjYsO(OX-*HiGyr>KY{3Vi;_LS1`O}MF zm>I4&7!Nr6+EG9-C=2(hmK_MG(HRhT*T=6ka^yq#`sm;n{#qkE;M*=SFmz>&hM=Du z4#8Nyv)imO02EoAa^S)&1JCH;kMRQ;gHdBB@XiP9u;dAqnj>lzVS{2|L zgXU2h-6M+8CyMbMO||UFDx+%0F6Axh{FT^OYM^N;zX>z0$ssEI@~XS-Z0qag6?v?8 zg^Kn$^71j*{05TDz$rZNxa|MqCh`a4Gkg5!&asRt;WvLki?Ic1Z&>0vBQH{Bdifdr zJ%G$8G1vTeCu@d8aDHZD%>vAQBZ<&-xik{l1gi*jevPq-7EKy#P(I6#!8Ju_s^lR< zq|7_@*`n29Yv~gWKPeo)#2SDV3Av+xl!Oimx|AvD8BIwH*}WXEFF<->@P?;BtFVL` zT^?_Kq0pEIzp@2Pw3IzgfW{YKLM&n$jb0O`P*Y^tBB+L4Kaq0}t`o&DtlaR>JC&s1 zLL$Oe&U`?FJG!39TH_ceDKrn))_MK@UrUTu$>!L-UE+N}Px(L9ng#bxt{jQ^-IF0SXA zz_OUP5fGo~lQYf-V=IHq@1UL=;I~AuCl|1%d$6Z6aRIaIq5dVYDZE{Oe~n1qpaF4P z%1g|=)7=_8-mI^k`utTZ$aIw;P_<>~!JW+c+$;sHWZiZ2(~D?PlsPdX7Rs^B2CaC{ zdL29b#sbtZWC~~PpJYrUmkjcYQqA_N!~BD)ua1YSEj;+YGxcO-Dx=69lw z$+H{!OtE2KQLC#&jham|=KCJAd$3SO@@=je%SWZJnPH@&*J{An9Syi|A8XDR8l~6C zHey{t(%nxhu2E|*@=-x6ez7sz;_H&im%mb=)D2xMdlqNLC!%KFPoqV_*6mp^rOU46 zWPcnGQbep0ZJTqnp!T$=dv75lYav-JA`MpLu*T(@I~q~M<@rk5?2g>Bmuo4nO3?SN zRM>dN7=Za};zylaqs1x^O~ zL6LL-JC?)MMBJIXb2~|=v(a#S1?U}i z4$>xh6jF1x>^`-6IZ&ZW0?2wZ6?@s{W`zrpH!5-iJNXjMi2i7fOIZo7O6@CqkJ{u? z;K&1+6UVyC)yZ(w2j`P0Q*AJZv2tmNby&n!jpH_up&a2Bn9K3+X;;iEkA_M6@HjW_R##*ac494 zL%Ef21zpl%f-6cc$qL}13_+O4(A69mA9R<9pl(swH9lvDYUrfFJh*4}u=+>EX^O^d zPeP4iT0mjmH1|6>huF^b$(-F>Q=Af~wT6t|`OAU}ZXl_hpe9$wy2J0gk|8g{Sj1O; zx{PA-FnbCi&aq=ubTxXZqPIoh-s|V}b_}5N;4^Lm9ajit+cMn}vt<4F z{MUX~-!tBl;0Ud>z0s(BHv_0~ZdkZD(&b2j&!#HhO`tKO-;Fj(M2q$lY zW7wa}3g>jveTQzs`iSUF?y0eU@}R%@D0Yt@!Ep;h5}KSYo!WvoE&`CNVq|QX8EJR2 z=Ym}7pvb_bj82K#1W2pAj&J=<(|QWkm2F9^$0=o5dIZl)5%#C%6yf3Opq>xCYPvPU znO2<(4V39YBa-iWXxPe$;IxLd4E5Hekr+4;VjpTVMb&%WSmLZGgV0uHx8Rlcu>g=Y%|z0=%dDI`5`XMpJXa28LpFB*IV5QOS_jvF|uslFT7 z5~BYTfDDX#0VN_~0zToxRYpm|a!w$d(ZsvVFnIwM)XUzs3HvNV?@~H@rLKS-xJ;Xt z;3vj>&#{x1&ws@uQ<&n6@8_^)&v$U1acTp z<|-A+7ieX(-ZkdPZ++=|P4S4|dwYhS*%whs5L8Y@y+S1tPcnj&M;$Tu9i@a5xTK_< zP~UpiMR0fpCCxZw$|MLePMokF0>^s2bIp;v^%FC{6M{e1Wz~YDaJ#W+Al@&r;FpSt z=qhyUIpg}n-r56X6F*2ubeSCH;7R%8Z)?_xNgd5}UN7iaMFsKa zuXh_~PtS(ldBso8;Y!!-GssKHDh%J}%V+?0+zZIH^lfv_GkwE*Y^V3oq0mtEpD(8a|j8;!ju^A@*T&EtH;9>n{PH7 ztxY0yUC6YxxFZd&BR5v`_@tVX0*&7JPEajp&B1Z1gp-^`vX2&K-_e8piN(x;GjZ&L zg$ED7V%9SD*!;dmJxwAzEj4B(IZxmol3IQ(x#!A|YK*mUcP9st#0?yBiQ5{VfpNea zjE`~P(I51?x4Wk2lShW7M-k2*HjDN2Tb32h&1v~Be#i3Hvv00wk-I$1(YKBc8RR?7 z4&@xWY825Y#Tl=2u%;dH1aG9510xeoGgHbm}4r?^!&05+&Y>^mQ%TxNB zv|A77Si#4*&#=2{v?~EO{@JxPGs`Y*_N_qL z<+eU3Zjx35W!BzmG%gQ9-+z*~!k=3@;sSpqz9^NaO`77+(qRhtje!moJUJ}CU(kNt zz{YRUzGYmP4bCmb*$4b{5lRGWN+tJ!xR)FDhAN#0awyhY>b^aw|LWhs|6x5B=cJEVhjK1s=d zX4*r^fj1R_|qxgkJh(+Ou% zq)AH22gp)7LM0LMlnX~ptT!~flF#2oAADch0%_Se%EUfFuMf`x(q?0C$G1mcc@H|y z?7k`YM=9*z*vDR9*fkVeNR7`(gex1bH zpP{ptYFEw#PiI50%kj$TAJTHoBlSv-4HYcfTuH?;hY6LQ_1RaV=XiTJw`q8+YcR;< z@KXB~4g%-<2p|p^eZPpo!Y|#_F?iG5a+W`TY#Xgm9LLTi5*u|IsX`pEKmv6ra!`P{ zw*2||H!#Rf!&c-i(zkE$U*z2X`vCIam@EBXE4}|fg=8vD{dX^(* z4ei3%iaF;`iRz5+hTmE{@#hTlUJngaFy!OsNAVHokS!a-=A*B#UCQJ8?Q;-rM&5qz zHsRe=d5zvZR{J;BC!muh4D$x={2=c*MY?&KG#QM9CBJSDuYz%!IO^0fN~t@?5|y5e z!;DF`hX!4Fr?iv=*xzoBtfAa7!1JRrCJ$0MJad##pfyUy!7Vh# zlim8-hg9S9)0-E0IbQ^x#}mJE(Ci|%Ay$_6(4;wSP`?Ixm|vSG|NFuJ8@tp(|0~0|itJyjq`XzQTnb{(h$58GR8m;|LeBui1bOPv zFj*@L2h_=J8ox8$+B6e=NjP%gL{)(Vy(EH3OKW+k&Tld~vNPZXDbI&2eW ztH(B59XB>O(jo)APM^=({MFB8&Vu&I((P^@vrCM~9(^kkJU`kfnJ)qbI5yf&w$r*LyqD>$Ng{2C0ux6qct-!2gq&3pag?0Mq-_wp^qsc^Gto%{y7 z5ae@~)2Uib`C=VSdhE~r1=JW?42vRC*SvLYB}d=;O2bz6JAc{M=nq?$#)TVtq{3x1 z{g}JGm1<6p^BZlR>Q!xzDi zitpzLrf@wWFP?vuGM{}N2~Dz>L`a+(33x%)gy$U%ui1J8BOLW=4*_9(hotqY{|pTj zH>Va}4Z-I7ndf~cDsS#2$|Am8Yp%^Nc8hn?CE(%W->S?jBR{k3pFPGlHrlMf#oQs0 z%lbU*rY*GQ_9m#}fL7Fww_+wOm{iJMDUttbZs;00O5ZU9?;-2K?D6wBK6zR}%;*>IWEe}leJV0^xOEN@!h3Hp z)N>o+_278d-vSkRwgTD6m#_SDl{LYCeN*xUkNTg|EdK*Hl^8Gm7dOt(rxm`%?33l` zt4f1qg_K+t7109;BvoG4qH_hM1#;Zcp%S79!p<@R>BPbyKw$=)tuAKs&5SAa{mI)$ z7?@jKt-4%aw5Qa+)}Iwkc&b*ykRt?DY|jcn>L@cY$SPwX)W>7WN|TdgfaC!uO<_qv z_$BUYjo0+VyGU!xejk6D#NdzJ=iKark&>kAwnF#lzUA&*FDo9sIM*^7rIm{#*LJ?d zr!h*Tr#vx?v4F)Z#kGvOm9C8F~2$-U}f;zsI45y0Y(3y9!b& z2(|gd?NfBg<*aP^@><~ayNmyRMh{z1!*kOS1S`IK1u2n5ncD_1{RGeV%_?|gsepF= zB7FojHD<^9270Gh-_j8Xim6uc3Ht~JZ|9Cq(LSXQ2ao+~C($WfGGUr0r?`{|qWb*_ za8xY7YLR9WG=fj1|0__+gV-{Le+9~+e|q!5@~r2KclLfuJmNH)|EBay)1LVzm5`P8M=`!v&aEbH8PUzusjyl>|7r9?({ z$EiMpKZVa355b8F)VhXNAg0jf6?5W|57pYj(L`mSmZkMtE< zL!lg$LY1L+nv1vMrlPhY{S}L$>4?j>(4#3Nc3A>Yqh%P*;Kh{?8pJiNms!WuXC~+^ zq7PQ&G6*HfR)+`bNom`PhiYB42j3Sv700x07|0Vtg!?x5 zRSYA#;Y?fCIygm}qTwyc>3%{yZ-DQ)4Io4YrH4&7BW_=Hz`^%|a|NqoweH{4!lRJ@derQ{WuTK74+n4L+g>LKr& z9F0HYm8XQ2eLpS*R!}SPmgJONuV07{h{^r6{Jvp*wtL0B7?{c?~vt0 z#T5Iz)i7vY;sF_t&wGQ#NV7+8sDk5J3$)YxQNRr*zY#{ZM*SF~OEcNYA*wscc!LpX z=4{z)MgCpfOKLJptHqa9;Cqhg4uk-P01H$aL{v=P)`%4wMLws?y3ntr~ zg;d~|7?6dc+LR(olX5(#DiZ>tdP73o0V>u6!fo>!!4o?o za21o%WyX1daA-A8Ab+`R5=PX(Ut&BnkpCZRoByk*Wc>eIRr&r^ReF9}oWQKvuHLaD zYB9}N1~4bMGo~x=jIJ7N7?llA%dVYfefP`=@+-wR>( zQgkQ$8Q9qNh=h!c=V<{BODomds5WyLo?TmJZRt2TB&=6tkdACz#?^};FGw7GxvyXz4#+D) z@)0cS!YKBgXJyje29Lwx=dd7xhg)cnp7DhNd-&9aUtqGkXCM%ldO>`Vj!ZO@N2+2p z;}JCv>mLU)a#YwYI5HoZUYVEFqc6Dx2fTG?WOp4w)53TAe zP@4ZL2W9tmg&jt9uhyo6D$cx+A}t#t*NU4eLXj(sx($6y0nxOA77zCCdkG%ZpR6q9 zr1bzE!SY1T@`nUlW+^AkAs05mhc>ts>YRo2OA*1YlWbaZp&=B?jxJ>!vgI40T4QT7 zzk9H>%?`|Yo)CcDcDKX#ky;O$iHNceu-Fu|8`pjm5JDSu7=)8tdv9|JJZU96aw;sY z0#apiqzhZ-xhn+sT{%_Ndzon2JS?(0Mcal zBqey$lLEn>T)>*+VSz1Qke5&dzX6gmA_STB1& zvm69wCS%MM{ZS{UY(rhh;v@=TX@|bS{1HLGq6rfN?-K=qk;I#e(|Hk9Ett+}G4N1W zQ1uYJ=jTHh;(HB4l#V)RcZHnFZ} zq0gz$cT#OOk^0$iOlTU)Xe8emgz@vI4h%+Rsuq$KdM>vXPgKNIEsPZ-mumxOusFxN z$fIaJi^P%ewc>=+3>_RJR*MXbl4HT-7`KYn9PD*5kUyMr^60nqHzK_}7UXB5!p^u2 zu-1t%_?hyg4IsZ4=uP2-r$C6S=kEv#`(B_eA*$xS_-{s;e9}eH)!~>WKchbhllCZr zFbeBg#7lk{NR8Ge1T$-$u(H9`zxWEz;{sl}-ey_uWDWOG{^;~bCcOF=9A{$kC*@0;Xf@=0FS(k*(tjAkpyQYjBPVyw@DoY~c{nES$ zRfh1o18?qkQTp47S|;jmkQaF2faO3^Cd+hGF3En`ce<`ij4vtNPx(+Id#;%eazt)f z{tYM@1Lk#NF>CA}hLxO^8UAVliyYD5MOzqGpcAHwXhqeE0(J2a^DMsr$COkcrB2YN z;a8~Ak=rLkkp_vx6;f)`BQxzXxrH2B_WW`r1NLs7j~w#RtM z!EVHJ1 z)3W(6Xr5Ua%jNNzq``1#)(Wq4M*mI(BA$s~a&9Hn7d^}#sc+yMa%CiEpKwS>jL0yT zHfv*KtpA|H(E4*a;;f43N+30U7v8CVh#+*HK`=LgA4r`_fI6X|!$mIa;xS=jc2p-6 zGTs+r)8eyK$zMct;zXV2yAhs);0klbwCtq#V+M59054&gI(0IWpCL@3?o64qHC3f0 z!jhdMR;4ZV)ZgLqTS=R+xBe{7=cewF5d6%2$ z-<*lRw8-I{P6I0-N~TW(i05QZ?~4A^>WU%1*-LdwdD5S=->4qUp-$Kt+48bZXvyDo zjRJGaJns`X&x2CeD9^FPCN~tml|vN^@Uo)ZKio!7C2@+IkG_c?!RwAzc?OmF2I<@% zhT0aGUw!U`{)u&&4x`Ka+@tF+KI|GWQ@rEe|-H9q~?D#7XQ!=(rOb(ejSH_mKvDx2m2awp;A*gCYC)l(m|-xXw|k6 z@H`QF-$7u0X$J*H%!@?wr2HiwWReRAC!8`p%*cE`;AVCrtLysoeut;WW~|ss_4fq> zfd)r|rNmTa$kW&E3G^T4fz+M|2nk9SrK<$Bho5ixBP>hjXwUkMzY=Uq*ybCwzjgCO zGuOttzC>unJx#C29kzjRK)5PPiF+V7m0@V9d*myX=Tt==Mif<6j>drUn(=gQ9zv4} zk9bkIqH_tR(H~S4neC)-40i$r^iq8FDb;#&ZRW$gzAE&B3uj2cSy?hJG2XdT!Ea8e z2-pFvV8&s6yJBA^Qa$Lopy(MB-dsNCP%{NB=!cZ(h9q38Kyc&*ZGhIyod?!DN<;+I zY#}Qid0Wq`?zrn9EoCZ&Yfd)H9*!YT3w`FiOJQ9x{D)j0O9mZ~9t|Tg7&H?jU{z+o z*8yyfZ#F@drgFKl{@Aj1Q@~@P6$;h#L{iyPB3`a~7xo!yFS;UiqTLx*M_|h5(7ct- zhI>gwYdBUx`pVTMY;6x##USaZn96D9IN1t#q}>!@SOpyGc=;<{WL(Rb}Fy^I0yw&T?_bKd6`i5MI$H@6(dkDB%j4TD}5FUN3PtFc(OV#Qjf zy8=TX&hh8Z3?iWl7}OGhFXV+ess@1oNln;EZy^;X9C@-Ibgj@sE&%eaQr9Z^ulF zvzCeVN~h8539k(dP~Yy!X{6As5n6z^>#_OIR_DvL$PK0)jCe>QsI%`37+phwuS|%~ z&t0J!!!(i!kk;EXbGkM&_Ehr5kHjNHZMOaxB^{V`ay@ef=vC`i7qK+C)lWDx2e&`F zsLrq6!2a??{JZRO@UL#5{h#uJ^89O0{4Zeif9lKq_0vDfQ-F>9tO6!)Qzo@Fm`mg$ zp})T~NO|7Q=r4>znKZ;_{qC)%THWdbtK>$+9lIM4vO$x$;_P?D!Ncf_0Y>1)VW-u@ z46h5Pi*X;{&*u*iCUgbBm39vd7(H4!g}O?0p*}BAa1W>cXxV5Z<|rz;;f3?& zK%rI-3kno?W&zfVJ45MS^%1l&TDJD;CGNg|D#pVpeifp}NVhu{PJdQG1d}A9V#5*6 zTQCn+A3VRdYA{OUx9HxCm`uXmsfr3}9cvX}$~1j!zM2LlnNfTc^(SdP(0EOWOHEuEF1kBTPOc-YukT! zfN>2EZ*3K{58DG$JEq&T3fWcX8MdHClDc0brjoPugs4~&@e%}#0Gio7(p08Ys5)m9 zk=&ii=GE#Xp#aSW3Rz7e8%0SpG%zp>L=k|12oRdv4(H|i<4v4QPQmBWo99KxVV2Xy z@}2 zzsj5RK$ps!_`na9_CiA$G=(4q(P%23(yLM-VK9Ld35)4O=hIEyCSU?DI zc?LFoC91)=x`wr0z3 z%`m-H``qlg1H7=l8`vlGykp}HBCzoI<6AyKb(U=x!Qu@F!o?Vf^wBf?(GTq*gzM_} z!NxPY0u3Nfy|74n!vUYXx^Zh(?7PI`iJ`Z60(mfZ2Li#??Kgn?Vc43C`N(8D9q6xx zwe~wqJC6JYvlw>msg>-;0VQBPjlx(#L`j5k*EAj#7=o2CCJck&ijiW7H%kW(NJCaH6IG zD>WM8>0!q5E(QEE%VlbAWG^qs*Qil7n3?GN9>Qd)QY6IbhMq<&zCjxU$Vq7u$kndF zz?ck{iQ55eAi7ivni>s+>C?Xxx63C|0-HLvM}zsvXV)vp$ zk~%Xxk`Fo5!^nb`1lXNaVfsy+p9bXuvH>IOOJ(A%pf~Ifq^;Pum`kZq;RNb=%&XUbKqtf(WW3BL3fGi}7F>Mul011x|Xk)4(J>3Unj z+dFFJSWGC#`=fei6c&GB!7YotDt@HJ-Q$R+$J2vK6M9)$FSBbIOU+5{j#xl^XH?L1 z`JxOYEB56~6RR5xstBC)P{4WEV3Ua9bfrWZ`oL}kI5mMKOG9N9e@7;$*nWpxZv91> zeO;#E-l9bnXDeY**Y=TNBb(N}aRTa+!HFuz@dQe7N}z>Q!DRmTV@C>y8xF~(YOZ+O z3%-yrCHPX&U4U$=dO0alRJ;Scf8KBj7m&#Y!yUmNUqYxcoK1<7b#1cw`(b0_wtcSr zW?0ye-ka_Mt?)S06Y2y*jv5}?D$LMA5v#&FHyxSF{CbC!T~fQ>eX8i@j6>8>Z{O3k z2}NrtgA7oX@3*2(wJi8?!`zgr6PjaPiY9Xu6*jY*@C223XIh~*=*w1G})!n&-nSVi?`K_`EA!fkop{RP!eLR3+GLK%I!w&cj)OaY5s22 z>`%Nv+kgWE_}o?>#Ewp!ZPs6ITaiepu95n#A(sRj9*D_sMjBz5y~phZx&5L)DMPN3 z2(`H)e~Z5fbGTsu7$KWB*#lb(rx=ZXBg;xh?a(U=Im`LHHVZ-g7TPzqf{zmQjl(3c zMA8>B$u97Q)r(Ky6-gD}4c;PTfjkqcw8FRAZbQSvgZMQ$SiY1j3$mjjzMsS$x?C=! zaY4ueH6_UkJ-G-88_9dg;VgpJ8Vv6;?e3}nHuaOx>Yd6TIrkHBf*F;X>7ElBzeY#DPj7kodrqv4w#@KtqnIHqX5=|bJv1m8GoJ;w8E*|G%Yrm{C5CK(Ivxi&LeP&s z3Mt@xlE_10bx|bc2Qcom6grM@|6k5W8#N(1Nt@ZVeKuOgL(Tnm1FrkuAU2tfz_=~D z25sWJ=t>6ekFor!`Yy2tZ{FF)F>qNp*`g)|ZzFBC?nQb;TZy+eM^7LwhP-#Lx)sOx z18*f6Ej;6k6~Ps)s2X5Y63%d0o0^qR08(5v8_!}cu@chfW)ATrB_zOXKcWHAVJqSaV&g}9#DmevzTvQyhlRVA zsaew7n{$$tIDZ5)K)BBv8(!g7lbC+nU`4jn@FoN>C2G3_T!DKu&XS_PxW;r~uhF9! zWrrltNlpoY8o~H@r3iTLfWb*i zb25U1CUIHhJSEZM)@>~y$B}cB7x#=fEhsXA5)pQK0FbXBXz9lkx5_5L4nNFtU|fm5 zr_lzodST{nnp&%u^=LM9Z^jl$)wZs%NCBsQZVGuQV~snhQL#&U7E3f@zL$_TP_t$t zB3J|SY_di)EM+Wr@O)efGx`Lbj2oQE1iLzxVBeo-Vo5V7liVm1Dq6>kPP=ThZA|0L zpjm_XW_7$cuim5M_^CaU?9(*kFi!8Z0D~btkpPS(*fL!p$4Gh*YIsJ@N#j7vE5xp2fSro#~Y0P|FO=0@?GXu?*y(&BUNyuI8LWlGUO zwqxq}@0nwA~*G4HFj$vUBGB zq&1~B(JWG2B7BhX{Hv&@C9y8vE|Tg^+l<1Qa(i|rRSdB-Wn1wcvn5+f(4#YAl{-{!-$)bXyqYYcpQ zmiXuu8l_1X&6d)$YJoskKvqe@vzdCP_|>KviARk!PRnJRe0o$r%9djN z3WVC0sYf+kpUGXS0gVN0!k%KXg&X<~Qw!vVWSo?vhZg#_#kq#nWvoD$rGjE|++v_Q zlg(@Mk}W=`A=X9G`KiqFOc@a&D^T5O$LNgZlrO(6%LZ_d(L~ljOuP5XCvO@(0U-?3 z*Ob^??3@2yFFlj1*tAL`Vl&PbkB-Iiu zTl!f07&5mQIQrpR0zeF$E_u#B5Ae$wnmB+CD1VK~>1SiFwW%=!c@7^+DY6cE01*f= z1E|1HtUtiuAiws&Zb1E5h<};RuS|5eBb9$683#*52et&ZFq)m&nCSNZbr?JX0}^Ef zK69qI!nKN}ZUFrxfcm#BTa=Pbn1ioFiu$@3``@uv{|3R1kcolqUn;BrP~-|yl$HOY z^vw|WLoWx`6dRRYUB$p_yYVpH`#GmJtE93QPo38O%>#JrbH zDmF;p3LMAj6>QGAw;f_)J3nxYu*amct2I9}&y>nt(%_Q@7*0S9RCdOLehN{hx+upU zGLZvb5Jn;kBn^d(DCLVkc{31CtTDq%LdBWF?~U_RCNc_X$Qm!~ucTxi<)JEmlrN?# zJPVkiq$2U;AJT7YrRw=@O^A5Xdx2zJRm1Si5_Q9Js~>Qw!CfFbmE8N!pqy!biuJ;) zVpUM;H!@xxVeP9m$M8pk=f6{#Wxf6l=oSuj@=Ex1@C*O+@CE+04gaSe+JBLTfBp0~ zjikSKz)=7#J7h(~5BMe>{j$Uv)l(Z$>*Tg3P1*((N&HaOG|cp)Rmu#SRT`KJx~LDd z9{~ty>gkq$5r$LjeqRz2V(jf3%i!GfK1}!9e$2MxM-+pK0qg-1Q~;>ul+9IJe*P|C zDquKJB8=GrpfC=_>M}&Zx03x1f@0D$+6f17?Hx4v)U`XM;2?{?H5Tk)MB$nog!^zU zE_Tv_RV*$97q1XW;nM$DE(rw_TJN2}S`atYO(M7t97Jn)bT-jr`?~PF&$!VJl|NXy zVkJe*lA>rFkOOT-?t?f=zLETS^d7C`*uXuz4&HLO3^yzA_}j?(GdeV#QX{eoE9CNzR1yMBX3)F7wKVD2)6 zWIKM4Ma~n)sR$?R>nR8;4bZqyJ2}rfJXM;`n##Zv?S=|z9k47gy*PhFHO8$KVZT(&~lerO9mk~)U1+ttJD zTMMLQD1S2p2lWvpEwJ~IGImw!8m!MZ4RsT*If)|Mas%gQJgVnZoXS8HlA?nV$Xf7k z7xDn1HokS%%(sDyr{9bDMe)`<<|d+BBqT2JL6eoydy_!_U1$^oA@&9K*}(A~I8M}) zOoT7>6S%@YG8K^zoM2__TfIP5th~e&;{=m8G(*{E?^rZL{bD@h;nEfD%F{RH!mNTE zSOX=JBN<41e^d3YRKJOqsbAS26#gsD-BnUkY6bF$V9#V8iDd35Cx4Sv85%yfGWeS0 zocvSvG}eD@&VN(>5Vdu&G5NwIS=ibB-G*)A~InUB9Q=%xF6adA~cqUW}`^+9L4+5u}mKI zZAH3S}FmLI5rqg=e4BIXlpEI0a_iiYL8_JDuVD7^L;%dg>l zkF2)aR4-AV|KbWCtX_y9@`&!$*?ey39J=tb6)(MWcJ6V5u8d*YM$1Lzh|%)uOr^&x zehCLu<8CfhYs5w%;Y;7$yZYb>P{2LKDKz+N4dxyZbm9?HHTmA!@EXf#5H)fvbV+a} z<}85A+_2n}|2rRPyODWt%O~ZCZ&Ed}c*!4OG_$x|S4PeNuZ5*yS8>J7$n!{I#;4Po zS&-{Xnk>BjTIxYq70SVpDOkazM}K=nF&`umjWkn7306r8+45}s1COTzA=Jv+ys)et}Kt5sp1fm?uq(9 zJ3NRJtW)swaYD8OwKVVM3(X8$AK7#7QiFT{D|zoph#=xfpx7qH`<(J^%o?fwGD8;w z4JHV9w)7&`Q6_SsjVmVl<+a-wac~kNnZ>7(4RtN;F5wI`=lw*y?n_p#VMuh&2)9!B z(t}4_XyDxCqQ1Ga2_n}<&5&0o0TWfg*EHUTL};&4;#NJ8%r#{=p^>e$kUE|wyq5!Q zLXgC;GVWpWl?dCoN}kT|h%BJB-h;~I((g~yC)Fzhp_4NMi2wA9)fjPUq`_w_>aJJy zkUR^zpu5;3V6@kX}}X#>-zr z^waZfm4Zs;j_i|b?;iqml@f=%#o{jJD?gD5l|3@7EBC4HFh;^OI|j7l7qNzZ{J1_A2kd z7Y995fBk9G`NRMOhhKBPE0>mKb{-Fky0Yy{k1I>lLh)|}VZpUib}T_5Uz%T{?( z%&;^N8I66ZZnpM_i4s~URtWl{L>#2zv_7U$*b&#}Yo~(Vq3D;N+j5Xtv8Fyy`$xBO zsh(x3mStaZ=#C1W_O700EM*>~k#o3{@~WNw5;8*;H*zCM;o-;6XzhvhgwdH;S4HH` zE?nOaL~bO`&B2ejIZx%+nFEg75}^T&;Z&76^|%&86PpUdHkRNZXD6pblNe0-G}|!t z4uHGknnSL2a)&hVh`Na+bpMdae5~kfyfpAh;5jEhDawa4IRIfJ%%~iJYxJgnFvD>wKq!1aDtpf z88=lv66MHxr2uLi>8Sl$?i$s53eEEG83cY8?@%zXcrylmMitb8tbOyHt|7_MyICGg z1+|k0X7gTGKb3Vf!=wBe6VqtWXoLd#qltKcroNk2Q*Hnt3?%P4xJ*=7z2}a;TWW}g`gYRS7AC2K;$rk zhRvkF3JgOQonwetn^K&P69{`E`qT0X63^XDVnX-LP)~Qt+l89~Jo#6Q?mO~uoV5SFp$0T{Ym^s=EkG#)MUH zsZob3*=f9Djs5pj5Zq6!yKs*^engN(!QH61pUoz_gm=d4)eks zn;Z3%78?AiN1^=+&jF5_r36A<`M7bZa;4B9%^!Z(wCE+x#5{{tk1UO>0Y)!(Ef)cK zT8ZByYBC?gnN<}1oZy4*j5@e#wkt#J_iPYCy*yLF(sbi&815sCgls9iRE7H6gK=G0 z9601O;&m6z{rEMCfB#fqj5rul1GS3Qgf{NK5v)4=^ccbyAZI}aOe|NBvIaO>0+<@D z-~og?)U|z4bz0pZ_Ddb4%{y{AajtWl6$~u?9yHEo(P2vGEJ2FP!OxM)cV+sFx9=Vo!5lgY$IngvcHb_vK+>m-Zw5Orya%2Gsz36O(=^A+AUTDK2)QPc zi7=hUgLebp4VFLXiAE(u^VVo-DUbQGwM=L z5gTO*tXzxJ?+5o;r0aaM_qpkXwuH;<60x#-=kLI80n4JCzE|A70CRFzK&?HeGSldRF#3S0jX739Knc5@C1Z?YFliiQ%_&FoAAg`12`xJ zx{dJd8TLQ5$iNjtO#v1R=Q}ZB2sI2ideQ?7is+F6&tKI5K`{&HB=H`5gggK`ILnKM{YCxcE z=RGr1n$BQ>DV(j#hzhIK1u$nYxC;nGegF@mIr{PSl+oEN%*$l-g7rI8N!?{fgk3niyluK+MjiUhH;c9`96U8Lub$*cE{tA;e6*A3=MP?}5yEqKyf{!_O-;3`Ey04Z4&mXvX%LeX4@n>G@ zB(NqABjoRax#VhsfJ6Obxhe%a!CpcC=uIS-oyj@G3#W|9l2 zty;j%;Qi;TW04AvL|s}Q)~#9s*BsW}muW$_E}&QrDn8OaRvjkWAKC{E5^>nTpfChe zv0av~U^&;#23t=bsdCXg8I)_H zrfCIyC$(VV|OK2h

    XZ*KClpf$OIM5#0!Dz&f1sx%(09PX!RO90az9ACKU!o(sQ#9TT|HC((hMzM+B z>PtTzNDp(TbiZVAP7@?wp8y>|dPRGvc_a&stbSw*m8nY7z4{V5S@lQ~YE%6P8+uXw z2o#D-@rdqKxk*cv(T5a@{>{6;75NpWQ}GgRwQw`jHPY96O91jc^nv0Lm%DfqVS>CV z3=A1)H5c6HCPdX2Dx_-DFQjT4Uuf~tOK5jfPe{~N5#HH@7asOUPLSppIe)j1&@Md@ zF0Py)(7Cc8{s8h;&s#{*;0w~${xtPtIzfZJI=mDU;q;h3SWd`d034-09Hv!wA<}e+ zn7vS!x)={|!bm#NS-hv04clrTcD+-1%4*@Tvy`*x^)FsAE3E_a3p1PC4NNr4)luhmBsl9@wv^kXG~v+k*=M5hr0KSKD-&T7IOKwGqK z5NL=zXp0hPtjt=T5DQ z#`-*8=eHUHOF9&fK}%Pclu1QescU5Ii$_(++N#0`c~Be}*@4EOHRQQyvm=yuXX)I5 z4lNH*A&U@Fm|0CoTj<#4Elj$l*34QwfYran?wxV~!#l}pL{XV6p#MgoA6@FNC6;J+ zP0|@A>Kt>hwsCG?+mp1vd@d_PBR5Tnw^CD^iJhU6 zstuK+k{D-XZACK+wul*C>K_s{oL!xmn2E3P1WH}%o2j-;6x$#+ej#Zs{;^jqlc0`b zegp~j@eYmIJ*AuLvbf?RZ*>X<3-b*`kK)a%W`D=6wJ{P0M_5XdnR*#Xh&86%UPbim z;qIpyEe%%k(M{JZzdMy({E3Wu9E7>|voDbwq73(uZH;4}hbjF@!dTM*#dwTKBlSez zT!rB^)vHV{)bfrEE9yPArJo8OZEun41L%tq5c~Tg21-?ZqoZ>p1ld^!qq%qE zMVa`-G@()(`hzO()C-?nVBwpsg3;>NP6;w>pI;a=>j;VrKF6ps`maR*gm#>n1>2Zj05pvvv~u2PKu3#51H%v&0ShJ z7f~fEbF|Fu6}Yn;fzEt~YtQhNE|?h-r0sfe?W=O6LL?}VnO6)V7P>XdaeU|&)KQtw zRD`lohjaxxN$*K9zzn|8hMYJ7L@RF4%EUVRUfwEEX$k^YVba+l-wNp7FeLO?d*Z%^ z2$inBj*}sCVnh@P&|40yFr>Ey`_R~sm60^7$FQm2yZ4e3YE#qo2d_swn(yYXQjnMY zu3))WC|=@J4yj4li{a@Qd@FX>yaqEvg!xKt@rqej)I z1)%FX2+5VgEo@yRF#$TEDAho4T%-&VEl`ZO?q)A%KFH=#H43JF1f&+&=CY`#3Dk?7 z)~yRlo}-__Cw0REO|n^ACw1HT+^9|)I;or3{yNE*VyWQqLm(PVb^t;)AhTz;nn=4T zN)o{kh5ZI{-ArZUjHIumZ9ZU@=*NokkhChG-cG2qa^E@Wabfkr_ z&E=Lm8!e)ru2<#%_+>vDVMkW6O{~CX*ZLhf&;4PK)Ts^RW1!53)=wxj)c_@)3#s*l z1bWE(@=S6F17I1#N3)d%#LoAfG9G6E3%2FhWUA$B;HtyoS;v<_wA1q&TS?h=N9b?0 zwzsmaOd-PO6c~Q7DMA?la>vMS`rxyjq2#^>i0I9ywC>up{ed4(H0mAg8Gz8LW-b`| zRihuKoAa?eDAM=?KVh38NRuSzJ)=pD@gJHBs|X=g_+RK56FkkRUY*z{^qGz198m&P zk&KtHg*^FRZj7nUj;JJT^)i}wkEnk3#SBtW%QYb`>(CiAbEo%*1n%n%FQ{Dy6KATm zD7lBC&wH>Posi`I)$Ans4 z-Zv}=adnPfUl>1iDOhpYgaY0JqKkt99GVZ~XcHZh63R*Funwh_=U?%^1YWUO~EJpU2lDt*n z*jxVy@S!9{0u##UU&c}KM8ech;%EV4pi{yyu8o*}pGS0=DoJ;hAia|0&JDG4uXA4$#pb*-3pyw#KapKyfI{h>Q*@H|{lcF3oUY~Pe6xW| zQXyY!cS;$|^O;epi+Xwk`Hz#Pl_vWPx`}d*_s|4By9iTa3ew7R3a;v+(mD?5l%F;Q z>j@7(=B&ssEn>=V*<__6vAnbFvE#jSt}!S+M2(2!c?#{R<2$o!03$pK!;xg2Sv4Ue zpKJWQ|ENPPfCz%9KUX!S{w;a`|AG)O{i9ow|AT)1?g=#~Ul!u=I2;Y4FG-(+8ipzv z_Z5G-?`6h1EAKSsO#fELOh4yp6Yf$3JuoAzv1WK8HT~y}aZU0?<|M75U06vtHfAf! zz2)f&+fc7>>>%Vd>`x0Cmg=pXFelU%GKRR5z;+1lUG2WTAxvn}9#$&=Uwh&0&<^8y zWWYh`k>YR?T?iR2%_}7{uCRUBN7J0zA;ExEQG24#SH0X)9S|$TM{!IKqPn|xya|EK1$+u-KDzp-2YE`JHwp@=K;nE@6|Z*iwib)|(ZVM56ZVp8 z@zUqhw-+w)viGvK_R^-0nivKWH}+iw5-KK79_C%M41@kpjt0^ZQ z@wXfe=f7^>6&ybaN&|i;0}CU^KhzJ(dX`TAVH=$;uO-n-hs3qi;#7WTF~RQS)s52- z?2N~41>REFlY{vQRZ6kk(-vTbgg!Hu(kojw&!O@P zSRp)mY9JKqGeTn~UEu=wnUjXmSaI)K>nvKcq51Pk9=`O%XN0uINKA5}H!tvKTByIOrZzFZH6m1);ju9suNqAA>k zS=Cjh7ZfTrpts}4gn5&n8Vn7M>80xGpf3Q73a91~x&o688T zxq6U!vzFG5@ijw=ewN8IRErYbi@kQ{*`ud6ex{4&hGw>| zil6SdLux~(@iV)h{`3vDX34@{b-r*bvRY0T{TiL*BqxI+z0A}-u|v^F#XX$LC51zt zeuVN^Eb@(FKUQf{A>}^XoZZq)_)2WVUK7GH^cn+Xf^>azp1VcAI4h>Km%^8kkn@w@ z&^OY2jYT8JB}X#IT83IItf3X?HwiLO!z~4^1yasorzg#G%zB`2cn;-l5|pW+$@=2s zKT+8jA*Rz@(%t9a=Mf;l?my0nu}Yh)7x%0u_oY-0aN=bm{O^BJJ+f2wmP1ZJ?KK`jJXY7I?BgSR=8tXN9OTj~w z{4&8Rk1#J)KA5ZRnJOt0Q4uAvr)a^vSV$8^k&}4xsI=Je0%zSr+mCv#d%dXNdcJ$T zq@No~ro5e{ezLc?LH!s?GElC)p3_T>l)fBg_DW8*YQe?4XwUXom)gjm)VaucFrFj$ zPRRhigE&}WUP^^+KwW`{U_I5ComEO3Jh^`4@^PXKTc`tR=Zf5Tqw|45hg z|C66Nvrd%%o)}u;3g$$stM-+a${qrvHhL5UBDe#41R~B+!*ViaGuB(+{TJ;I(VSl? zXdYMHxJGHUC<|n?Yb5E(j0dTV8_CiKgOigw*?M0cK+iETKZ_sKY4f{VY(7>BqA6pp*dX9(sDA7q%-q?|}BU24XBVy+aaLydt6zD{z* z?^62QMOHUah+)^^q}twzvw1*hHRj)=aD3cmZc%JQ z_a&ptyk@NO#<$^@L-QjK*-f+lAZVyR37W)Df`;6ScM`t^R$ma^k6z#BI$v}$p@VNj zKzxNZomU6z-Tww!;*+4U1|ZU%q0Q%I%y#B-7M=_qqOtcibD=GB9zJ_{Tz|FhBRw!h zDOpX|(QT6jGZUfP7_2(t`KqiBJQ?#H%@n~kl;+#Wbc@2qg7nWRDy~-0B?ZA?!-V4` z>#|y=Rm|rK;O-Y34eYFpdN2@Q#y5@G-4 z*Y=H85WXV-*l)#>8tr&|36SaP$ixtAe63p`Y-$~cqq=}OlFmd3SXHI|CO`-8POWd< z7n5ChOR?>aQz?X0dZv5^+b2e#PgtH|;nd-gX?XZiJVf=B8wQHjt~-b?Kzs4Gqh>^GpOeKA-ruF|GONWSi&&b}jtBb|} z%it0;y!D+33nFGoZoQ$ZEO_-`mJj+(t99DpQEkw)0mX3VA>12j~}PahnSlsjvN z=KdAviDNV)notK0lFNVyPO3LZRHq+?xRHzZ7Plv^VYLXa)de&VnEFy{tmP1t$<;Nz z!yOi^XW85I5UK4uSNa^Wr$a^zju{h1Vs+Kxzm@84l<5;myIUx_g;MQ?#5x7Qh=;0a z*2$_Xq_tfJ6F9V45|;OnATACW4k-Q0f~kY*1~E7XfQSv&nqO^aFlqt9r@OM&j!cQv zQ^#xVQKxl~{k6(^eYH^rer-kNN0u#%!Y>i4P8vPOPab!LXPgMYg|+>!Tq8kW+bL7) zZ?MrzWvieJ-6otT7ihtU9Qd}qC>bZ*5Y|-CM;4XW)g0995phP0LX|l*@Sq_|+tLmA zxz9pm<~q2njlhLE_)xR#p>K+X>t>fq``FQd^!=Mz^pV}pT8Uu3vu!VsKvua5| zH4Iy8fP^DlNlEx1KrT$UEOWkPFASrwx@F{e22wM5R<*Y4(0otYZ=&3XWd~KTQ^0T9 zY679PG;Epm@{VL=QI}|FCM{Jko&6!j2ss|cqh#g?iXXxN69b|cJunKv%QOy(2lbHO zBY#J}@uYYkxef@BJg|H&W@*$w%H4X&G;w&~fWX)utY+i=iVp0Q-?w@amzLyC6MIK;nv)sIdh6|)in?Xx#fsD3@>RRs zG<}ouD_9ZtNr8XJS#zA5D6ybLsM+gRA)4e)0WZjY9fl3wbGsea@0omQIF6(*`*2iF zPeafc#JAEpwDf*!2rSBUbEj2jShg?~2&4G@k%AA7on&cU`02No{w(h4cc z$Pb_lGU}a0UEXG98V$k_PSAwl?b^5lNbi*N@_vg!3;!0!Qx|jqfuQU4`AXQ`xQG+^ zbsq#Gh}W5Jv*Y*7YXar7@=HI(Bn#sUvL43|DLc~T!*6NV&{F*b9yVOFU53DR2Y`7 zqOr5h?=2*;jed!nP&!jAnNy&=zYLz*J26oGT&rxIUzAJiChfN4FxfmFAxni0KW9pO z=zNuzYOScZAmn$TXqouSN)Y5tv+8Q^nZ55#bLWoH(-I>7B@ZF%uIA(-Xsd4W)pE<4 zX~*bP%uHA?A0BbqtvDyR_#1M$W4Z#qvUU!Cqq-1?k4O*swWnO)RTTqDWze=ulievj zMWRyuuR%>6X%{k22?xWZbUO^%4C-phW%O3Qm%Mmcr-xxgm_`eOTaPF zwm=Z6$3nbVSa1uoG?b&F1veGtfzVxMDsq5qVtVpU8n>>;9mebulb1P%>9Jk!qiH5- zwDFhP8t^`+#wG-}<}$FJwa=Y4l!ve*=@W!338*3N4XL3aP zR9}hG-|8j75JH=vO%#Aj0us?Ds?X!0#nFta&`8i|jOZe(p(_}ua+11NlE!tBXVJ^( z%XZp+DPvJWrBOtbZ`9bV5HH*x=fgEx51TX5M)4>%5)4wu6QVChf38>6&Kz(R;H6Dq z{|Ys;7vc@qSH^S1n$vZ4d^46wUGc)#Zg{ac2cS}VGoF3mkExKzfUT@_*YFxG9bQhU zJ)>=GXf*onKJi97$+pnvyTd-6)776(7BikMIzKkVdZs>pt6pL8Y`0#v9MWFYg4{{+ z?JK*?I%FP;b9)g!VIhU=V;+8d=#hWH8R$&KS&BzbMVDFwU?OqGvY}^a zHO4so^tU3T`CRCwX-1g+_grgX)tO)ltb|f$sA@nP=oX^&|lG-w4 zZdZjcrO0d+QVJ_vYqIIOrL4)ekRfM9SAaMAUd?sdn@rmY)2;5x9S={!RC9`a?FoIvGYdN4^=w>)1y zl61*?j3DO(?0=gRDm;R|MP{kgsAJM%sebdkF(JYsFfoIRHbFc7Dyk1#8G{Kn6tnvU zqI7CtvwhJ^s9M{bh0;BZ_!4wLiD5$lxt*vJ<0Am^sN7HplN7cL_bR8u?Csa;j*T5* zf?IhbyormH29c1L@P>$;zP}Z_r&}&z|3C)Gy<_yOL1wF{DWh8(ddtf#tHpLv4SY!$ zxh48W6$R1lc!aemc52w@0%!8WC79gaj~oilX3`9l4&h93n`~Q|_{LvQAspiE`+7)4 zSqd&qJ&MFDvjbf|96xwGb^1Hqki1p>s_(7qHQmxgFo4 z?n!7U)TNE0-TXTsrQUWug?@gJO-Ih4^hPy3MmdDSv7G9KVrBB&Nwf5V`cVyM$L`TnP>A92MksP5C%1`F)(%F2I3 zW%6h7{ZAotxWcCb>T@@vL7`ZRWNO0{OB;D4OQk;9H*tlTgphB*UlHU{PXW5jG!fYP zqy!#_P*J>ORF7Y{A?<8%SYR3yHMkjf*dNB48C^bIY@VPv=C9ZS%8_sis$zY*mZ+Gh z7^vu}7%=yV+kz1X!vI=U;}>_=xsZs@ zcL04LNJI@kb07t_;YSdd6^WdaYX;*ySCOWm`U`=d_^+O-k129@G#czSmmAa`s27SM z$1;=Lte)rirnbIpfR~{FW*h7y!V+yF$*a^~KN7q2k)ppg5WHu~+h<=!)}xjv8EFh- zk5<2?@NRc`nn3Q7umLMLtteXgSgtvF7_qN2){@dO;$Ty>3fP&=UafG6ClQUqVH>%} zUBko8!t5~vw#i4`XDpwPxLJ=Pkz}YO87{`NGuC&vQdYPb6eZ>`3*=l)d*3x#eO{YYb?s`RfS}=ME((L z*u$44kH8S}uU$Uv40(JdC^oA=9Xj+HBFTN|11YTg)NqarlNHVhi??oq>fj~B1Bgl% z59elpb%fK#RkM#|gCMy9anr!WE#Ie0jfC(7ABa;31ty%+PLijXwd&wWWeT$uD8T>} zp1Zfdl%S*yXYSKbEFY{bt#9wl>IsF^t z(tou#`>()$e2l~&vyB0hmlRXmAhMU?;skI~PG)r0K_nzaP%tm>q_Xk_dDyb=@ibx6 z0X$u}Mr};ral5~!I!@fK+e|o;9K7w^!SJ2xY4nx=m|;#ZSeSOV!SO2yziK?k?@|SXQ>31Aft}+uNevQuMu-1xlwu$_C;hv9Kp@@Q2Wqugu5X3Nxm$j>8fVY zOJfvB)q;Ec$w28rd{0)IOo;Mdck`0+O8=Qo6tzC93p6j-rK%_`b#6-XDS2vQ zOJ6w+WPwmzAR=m@0E9X(oESn&Dd(N@f*Ebsy>jm?7wq({fl!WIx@mOpUpu&$J(wT< zF5B+X&iGb#md4j!-rN@xPiLQ)z7X_ml~dWF>fBXCgo{(zk?Mk-!XO|bCPIUQTNKa7 z1d&dCmtBlToIx)ODiPYzK)$5dIwUoQMZ!3bcvw_q;7f0v4_ii}xiW`#)J!NS$7PI< zv}Q!+%W>pJ=dkxfXmDc`W3~T+6w;@{*s0A@AH6b}Y#SLd)pf4VU6tvo!_gy%Rm#Jk zRno(kl7u^+g=V&a&VXNZrJ=0Rj~$?DUeZOEl%n1-esO6T&$+TRSH6;iHO7z@JQm(n zVGQMS>ALB*d+6R*O=C!>L_zKr$|r%G$B<_JY2dF~yZIZlyUdXo*QK1rcgThOZkLX9 zg4I!8_lW0|X?_gizR;5S$+7r%+fB*YA`oBc-dc$6;c#mNt}Q9qmAT(-UyrrgZ;;e7 z=&-I&Ia658$=6lqSIli1pC)SH8hEWbE*{wig*@b^3N4G@^JnggA{$%pA&dE4G@NbF z*d)MC8DN^(<5L^f7TuDC;bBm%ai^Cho{=_6#izWxWMw!o%f?o%gq|#<=}~&GXo(*2 zFYh6kR4p)tGs=}8!;>LVZo9DrL_DZ2@w&g4Q5Uf4@BB}!On#;(x(GI$&YSy_UYW;( zMlTvCF0h2OO+>wAHaT4h39uQ-scpYUj2xD_TdO_3rxZ222nIk-i~Tk(Aay0?50l25 z^A(8jk5ea`TFnqQJhX-=;jN_ok*Xrmb5ndKtd}8u%;PLSu2Oa&5lQ2=S|D*$5}Dnn zOsM(GgWi?Ds@8dzH1c5msF zN245Wh#@l{-fnRC-suPR(}hpBTIR#qwiIq2>fb90T=w_QS-*QJXD*ZHU7S9CpKP1~S0bL%Q}zvDDVSq<&0H zObi~ZaOyAiCiozOl!DGfmtii73W!jE030Fh3?;|(2l@yk5mS>)h7w2aXgYW9%k4E= z@fG8sr5TeC=8lV#T{Upi1w4i|lhNnAy7fHdN zLld2YA2EwAdPEMd7cdin$fTU?{0_HkOq#*E704HVWMj;hhC>q(vf$Xq)!WUZFA^YL z6oH8JP%YJ2seoz91l3zf+WKoNXgaR|k4L7In1HD!Ipoe)u-{Gin!L}EV?=05lk6+n zJS8+>5L{K51=t=wOKrm>jQ{uE4*}^Pfrne=f54 z{MUbfp7{z(;=P}OdIPIjV(a>Otx{#HTm(;NJ~D1_93yp=SeO10fFyCMpF^rkV%*f1>WNHOu2qQ9(I^7uYZu6sf zJ0pJ7WTXA250Jy2MVqSrMbF=%SdkG-si#fRs&`It1hw~k;y*pZ+P2MtF(cn_QkEDA zE|Tv|ue89!96(yu!bJVB-Qxs2pXuY%Oxh*@3m)>)QMQyITQe{fk^6cAQk>I=xq%qC zX~W(rFSK=#|8YO{lZ#)!*V(dO=&+)RS!~J$TjV(&01k|PX}B^Osr#BgB)cLEQS4_S zGM8UN%`dN-0PVX?fxkA=+q9+$gTGLL%0C%thS=bJREGRQ-=E-l3N;z4X;$3}^L-@! z+&sMMsj~gLsZ9p!TSpLDrZDQq(k1w>p$Wo4`=oNc`+ilEuzWDnfom>?M(|D|68gT0 zD5fq$eQehAsOI2R#OS=smXu`3Lt~C81NmckGyXgDt61V4py5;!cYmV9kRIQl%;|2sU*_pig@^9=vbaQJJl$v+Qwy5h=bZ}FWgH5JjNndG*I zIUtTBaoe68DW4yl2Oqge5op^km8zKXbG9P!0vLiEQZ&ef8@0FdMQC?tAXj2Z5w`C8 zsqG+35G#sAOWe>_gLQ51ypII89vtdyc6BFD*{A2?@rtbP`6&P^nXZY9cB3%dsriP3 z2TA(x>7HiJZC)D=AnMqGqLzCXk2Mx9f@CXqF3_}L!EGjl1H;FK_x{7exC%@R#0h&hE6GD=ydDp${4!r*@azN2FPUQQRF}CzkDv{5Yb?Qsfe{-OX?|W>rcB~hH|iyi=%#5E!r6<2%7X`F90OdXv@HZbErjt zyXlgt62OHtVAt`O2B6gq`y^H-Eyy<00F-ERw#Z^IjIPSP%s+Csn2DG?;7OT0AV`@# zU@A>rL-*E&rF%Jt%w16nnLV%xB}tfHznd_E6fM7O0T z{XPcabNSQXeMXE*929yMXHA;oCi((Tl7NZXCoC;1Z6{`V1}I^2oh+!2lF+SC zKAkAMKw;M%$ndbL1F7u0h$j!3+8bkf7G_?r3`_fWo|M&@qGwC?L`D*ZeYprXi&;#d zBFf)i+{cnouEF?opL+6>=&kZd##JdY$M+qCw(A8^42EOm#0x=3i^*#hXHzV-PWn-p zox}GP6huCFDiEGRNt!XNmy~WMWS?i69nF4mm<2&gm|_yF#Y9u4Gcp)0yZqqtcwJnY zW<&*@giXidjwK4-(k!+upU*{D)t4zJ=Ogf27Ns#k0Wb(xo1zduN~gfoK%V&mxtGYT@TeI3(bDFe18Y(!VK|dsL0aIMk7Xbntca_@E*i&}Jp1Gr;U8!szt7YgH`UzmOY!&J ztR|=CofaWoDZqVB8_!;v-q2{|97X27$A5@aPq7x2K@n0omD#xHm>tMg$3iK3YC#`; z!SQWNL=IJVo7%hrBg?Ox5~>gkCwoO>p$4>SZmc4CS{Z*{c$r;mUk%TVDmGiFdu+c_ zmTiJRd0C03Kqoi+B!rnOWK-z0P{a@Vn8IzyviFw0Z)CJeLlqXK*bAHhjrWioM-BIR-$H zj5a#FL+rBMfJ-g^h7FOICt^#<36A`;Zn%<`V_w5m2BSO zhh)UkyqAg2x7H=zESIuWsi>o0ai`8Sc*=~7lwv@mMt8K9HHdr+=6dA#W~o%NRTNi= z-#$sbqNcLZ9un$!$eb2?)K>3MYL*QuS3~#}n;uFy5C5)vcJ7cqWG%IdceO-vf9D*y zZJL}$tqJz){X$UJfqR{b7w_JC@1-T3ZV9Qi3xgG|XgKN*u7;0{z~_%yj*nW{;R&xh zPk0Fv0jk@t4F*esM|&t&tAQ6kn2+{Tw;dV8pD`AVlG9PCtQedaHtI zrl1D%NUecSuithx`nhJ<(#6PO4ij*%;X*q*kFixm-t@dYJL!*vEt2Wa9+hf2UuzpW zw(vYExcWv6L+);-rPDrN>AG(nDKt5xdunb9P)gb0J1I>ePicidj=5%@>l4we)oZ?) zvRKfDAb_X6 z>I_+i4x*K%1tTUX$S)}!WwXb{w$!DxA%t2iFI|H=gePc8sjHjV5R$|x4368r7ID=` zJaA$@uh5lssZ}p;D?DSxN$H(<0@*Ez>)xWI7 z9p$^)j*d%kgRPtfnV=1&v&JiqcimNI;DP0<$myg~T!*}Slb?$iTB$A+v!g0M0am!+ zg?=%H7{gtK^)(woMa#z(GO=tcokOK|7I6iVW@`L}@-+R-ZjNu)#08^7kQYmF~U z&!7aR{*V$ zs>~0NLGM3r=?3^`Py(?Jd&eKRpmZC6Syv|K3Mu0Vzif^c0` z-q_^XjHd~nLeh_ghe6Vw#omSxWaLtcc}2^jMa635UbJmH|E&J*s387se*lv_Mgm>2 z9<~AoLz0Q8iNhYK_hw7~S&EnE>~{ba1CiftI}>#~!K)_CN^Hw+`B*UZnzNnm+XPR; zBBhEwRVdwTb@1<6qrvi{w*K&zDVV|~N6Se4U#`#O54-3O$Jogfe)fjT1wV{~;?gv_ zv(i@@Y$Z@0er!!&1(+)ILbv9EGYV2#Y0L*O!2oQ>QDsd@>07$vdiG}QD*F)k5Is8w zqA=(ZxJzau>=(``c|0_r1ABXuJDZiIu7+&s_^s%egyyAaYh_^Nh6I=()Mq=C$Y{E} zd+LV7Zn*?(91Lr|_q%pnf->v43Z3Tr2~~*(bVk9wM5()q#BDW0Q4z9#L4*4OP+K-Y zLiRn%!TnRyi^Tux@LBu+z35!x^9kG7o6zdn>KT|C(HhuTS=m@SeEzkxG&1tu0+r$mpEEPE%bSQTpY1aHaA>6-MyT+IO>6> z(yzu|s`9J#AVSCxm-P+XazucWARG>$18SiU+~E6vCd5F;LMuR{q7|UiFlg#GjYa8; zG8&@QU_FI|v1=MNksAQ98d7aHgn^Y&>S_-loP?BV7#I7aqr=%r4G``cmep8?m!Cjm zT6zLbpj`}q43_b#P-vl`iRY^{#A^|okQp;K9xb=1jYEai&B3U!+8e3VA}`e3NL40E zc~H}(iFY2^YHuvhE3!^L?<}KyxKc#0WE>AE)j|7VIgY+IhHvM~10DHEgiM?ioYR0i zqLzn{&}{{Z&tpcUGEuWO=M#?u^uULVW`CdNWV1!=Pto~G;Pvij6wh0Z{@$=a-r&EH zqd*oHSKV~wD#<2q;MF|a>{A?dL|)7L8r-mGC{o`D(~sv=R=`%T+#Yitcg%T?L+*58 z0516yo=@Tkg6$g14>Og^!lI-C7l%ugbz<`sNY3||XmON}l3Cgqb4z8D$})Gx;& z7vID{h$gpCwzS+*Ni6&)s>guxPGxRA1$O7M*mzGxNM6vdMJ^eKRmN`6h`HT~7&7rp z;HELV!6F4!==_l$#2kgVX28>ZC)i?PqraP)Xh4q7AAnH+j5)Vr69fp;Z^i1cd?k)i zMX;8!yVHDFL@v!C_Mst9-R+bGpg8tW>rj@Lqh!?Kh+$sx!mH+mU*}D)zBvfL)tJ!& zh%iI3qD^hw^6+V8!^CvxIxeKhCcBTqa=;$oU;f-A_t0O+R{YtU@cu32^>2)2{D*TR z<6np1zdAR9hh&=QLk|4zBOCxplVrl8TVH62i*c4%j`#P@M`gzOV`5=PWBTjfCXTW8 z`q=5<%0uJ=t18=oPdGKE6y^$xa|u}&y=<|stW!16LO;#C=4r05soU9Ta1sO$3dL<8 zN2uZ=v8wh9!1j>Z%x@(a+Oe^HnV_z1PAVb1y*a^>GE<0R=D=T{r#<%T!>4iMoxz{R zjR1%IL3t6N?0ZhhPvgdf&3v`P&|>g`8MqlDF{KHtK`P;bbFu7-zB(uI!&ig$3I7oh zvxK3r%|pj4(2kgQc<_74z6X1{9*D^1u30MJF*-t{3WvE(8u~%s;YIlh)=p;-#IME#X4lRd6nGCI z0Qr8x!8)UzA{B}_tw-pdrn;G`I_$(UfylgxLN1Vex(hj&q(Tg%4o}a{6|5A&LN!ix z(3iKr%*lDq-RS4Yg*q*(3pS@Uym!KSsMe%8SbGPg5|+PW$-9CZwtsc)9sgaiJR_U} zc7T;sm-NQl5Ei9v38KH2#9e&*j;iz2$)|v}@&G<~^qtWt_W4cuth`IXf#5`p3^Gz{ zBRms)ccnXl5RcVk17am3gn$$w>8vR7h0xfi8N~eCm{}nN+Wp}M>QrNF8?W68OzvZ| zK*cG?)gqJUpj@y@MiuFtnDI=}9h)|nFeGz3KIHOf3PN+w%SUp(b4&z%_@J2^GAM2g zM1ZLcqZ*}hg$NGHkvtOzB+w@S5#jp>05M{5dweJC@T8CrQ005i9-6hdW&1AFG!_EthB@_i}s_OX@9KXHYIwX~glP^F~0Xzivc~W@}lxq^>FO zf5gJ2fFq0DuKl6OE(f3KV>uc-O}j{CzeyjP)Y<4D3{fi^sLI)j1`J|kn7WqeY4_#; zh+#%CGERbYxVr^+cbDMq?(XioafjgU?(QLM z973?*!QDMLq&er@_g>%E{m#8zP1P!@_J3=vImevCzF#FbqY-bsh~5vDpcApkt?=4DvYY1eg#XhlB&PxPO1dPvY4MDolGNWv<*_qdj8#|A9o^+3K z_uc(z;^AXLM`dm{kM1;ni~{*c5>o_ra8U7CneB!CBZ-_-=_kv^WiSmesc?!p5)LvO z&UD5BGxWXz6jS)Cbb6E6v$PyBSycb${j-B<4;B@ z!huQc3^=jwipbHbe%(v5Ou@GjF9i`fVLfC6$UiG zZaTK7Bd^>JZWZQj%(8uKK(M}FEa4p>^vi4KHzdICg&Fz~Y z*H@%eERj8bFc4TiOGJVzoSqG`%63HhH0( zLP`8lDAk@UuN8^;b8GMR_D3{H9CPlzrGvzum7uw|B=rgD>)4*W*WgC7Smt-Qu2p__ zM&>0^pBoI@q>^BGuldYDsC%TWJx+dC3AR)&M!W|cF4mAS~e^Fp_z#>GlN0r=?ZK3hh0m_DHh+}tycWEXAbMXwyTnhwWEu*o42yN zx%)q++sxzT6$XS6!t$+?P=7N73w%=p{|=^AbczD?(H-P~Q{ypC&L%?{X%Ghmv#A72 z1y9}wA2@r{{3`f$U5FV(p@4ye8IKVUDBpXrFg1v~E7Lw2`Vns5MJhM`=yIA6+I;=h zG{a(XD-+;5pS_o%XT>Y(AdsD=)KRv>iJEd!#aqT;{B#ey<(Klb+tZ7P{6$|g&(>jf zO1xj(N^|9t>0*t2h3zBht-)PH!c(1lp}V#3hAWeC)94E+$TTwSLulc(oCzsR=(7?T zvQlggDf(hv2lRO)>vQdgjXz9x@_>;1^W88!e`~sbQ}FITg2ev{9{zs>?_gapAqU&t zd8UV&D7xYMLxlPz1B0%HV5B=DDNS}kgYTY~2EJ4U0m#XBa5}-|YSGJ<`TBZr;^{RL zX$_@_i9n5`##~~g1&Rz-hMK~Zqt2KJ>D%M?((=;Y-In=qpp+ZKKetN?qX}`jqw_&< z4!VG3H2fsCdS?wWJakECiZn;E9+i{5!b&_jTC$^Q*I(5j<`YAyn42zM4MM4-&H)?x&&5LCi}J&(m9 zz*y|#V*Js1rG*mBjLU1IdRZagVuVNOR9MJ*lndi(x7ST$F>{iX=p{GYnp+>dSIb2L z4#UhO@?G&xuoK+otF;VW+O(bS3V3M*tjvLC+N;5Ma}$kHMkST}2<|cZD4`)oZpVLD zyt7n!SG+U-{H}P{$Sk`RnaXp7FscqlQMWwc5+)+ib^UslSIWBv@#^-LlZNBTE_qjT z=VUyP{qj>;pfVFaiiP0UeHd~jN@3?F6*!Qji~<+ylee;1n;2U1@DB_ zwd@N16ufiK*${pgyo)cg$AGgdmNSCbv#opxKFGqS$QlQ$FsBz#_gyDOd4RsS#k%&C z((a8@0V>w9#R)8S{&aWXS@)iL4(>yK;Nb(GQSFS1o^s&ED{$!WbP#vMy^0Beg+p87 ziPU=`LO=gzw0rQI)q+BDSt6>Bl2QK5IXN6%;PYAnbAopVtL32WD{14;h%o5Q5SN#6m?qJd!h6HrT|D6atmjf_?vD_~`C`sEr@J=hi zqDb4tW?|JrolXL%M~Sojf#{zeBI$z-6}E(s_8?J&rG`VZ{FBGugIW~~@d@nD{8hU= z;bzUdYr1)V{^v+S=wEyFckHXVi@AfT`Fs5E*BJUg8zxm{OaWX3#UE<4kGX^7T$bO- z2!PA)#f-x=2oW{>3H|&`t3Rv5GqZ?BNx zXL0-pED!oqou%dmM|ky?&%j)-Qc@Quf*O+{5al>hTjS~Ghm%m7FU~v~isOhWL|u!X zrgw7bPNZ%)i25Ar>yi3QIdYzXTPH2xoBlm7_3b5->f(M2!>#L^wQ5dzfUG(gDo4fd%}L*-RbpmYfYWO6+JYy~Q} zF^}|9B=QGaznk}C0wb34?L%P7l|k1$j5kg81dpfXq=2vI{$%~eMqp78jFx-jcE9J0 z)66Xi^BD+4fsEcU;S{z-D;Bn;li6fJj>SB}%+wf(k9Pmy4&aEws*_!nR8P7m1O{&$ z!cIKJ)e5**1Vi9Uh>T>ZEtA{lGknF;x{Ij(9PJr$cAhuWw)PMxQ{a<#ncElsHMOK0 zxT4wR2%d`oEuDiZiAp0HZ%7WaHfmQckeszn*SfLa#F!+pCrBhzJK#M;WlXSQ2|j5t z%Ld+rK0>(`tCp52XXJ0E3A~(m-|k_Q-bK$bSa=bb2m`a8_r=P z4>n!lbc4D9B_xgq-yyx`8&jmc4KS(qjvli(q1(O6w5h;c9S^O^`DpP~0{d2tli~%-v)CU@uO`)m7SU`f;k>GR*R_Fa&V$NZK8I+>P-Lik)s1SS#AF(ZM()8nYV45cuzM3(VTz z%m|Zzl{y(gxZ-EpnKX5VD)eZA19UTNw_0m!%<)}+X11^{gSz=Le-8Cuuq_VnLQr;R zo*Fl`$6lVBDo}kCy!+_-oY_KmI0E)AKCeJ4wGEqW07Y}l%u{9*Dn41H3gTJE*=uFl zpCl{V1UG>b90>|$a*7;thB7P?1Bnx;I{}F4I)=L!AK&qDYEIdE4$Z-QHOGv}zT7pN zg2cW-4p19AEx{4oqvZ5`N45xniffLxe2uB9@5&q=Rh=ih)(kl-v;~x3_>-bPWsA`; z6qaoRR8x3f-y}+WRgL^}RNHK!;WPt3{eV-?zGK^Ti({Rd@Hvrk^~;i^27_D#|Et zd5Fl6*S5UqOC?NpwY9V6p(xHKBJoPi+c|mVf;eVLktz@-IZ&i8Px(tx-I1%tM9B19 z$QSD4JP?`FR|VK}@QTkOA3v)`?n~$im&!9&;w<@_g5$BJn{IvnBpOr7yZ!nZD5Yio zd9B#kekswP?wJ$TS8c>#Sd|)4HTKw7hP@a^na(HK7QMk(@QBgqz%PE@axW}pI(*xb z=8^)s*pT4LFNXI*?iw*_Y}C6q*KDOF1uyn+nXG)f3oxe~QM_7oPFWO;54aNB6oP4| z@$a>moa?iC7vr9LiL|-RPgoGovVB#hzJj5gIjqkeB>kNvP5%ofuh;>NW6I6nVepDZ z`lixljdJr^NOC8%SHKJoQH&#u*2-g={t-e|D~G`yn#xX%fp7{SpiIMQlpJqsA`6beg^4^fuqenp)Hat>P(YJEWI0M};;*dH08%s7@0#>xYxQDS z8N<3rc1cyGl3Iz_hOI5HfYsKW&;oIUNq$UMAYSx-uo(hI0Ep$$3#p>Tve_Fw3PBc}K`=3P$EQ|NK;BSS~T zZ!5peSszZpvQ$odrnpSymVm%mKVhHUOvv0M&MxdV23|0r9ETk#;Riu92OXeagxy`8 z7lMt)%CaMj-cGWAH01mW0)xLs+FyZKPUL$PVP%PP0kd=b9K}5PA!-hinotv}#&2(j zlKvIJQ5NXd)>afp9}v2u20-9HsIe3HgvOZVspCbJlww7PIJt~Ui$GiZSq9;SSf zWZ+mxn;%vsiZx76>?05F3-Ok}g*IZ3sD8kvW^XyFC}PWjIJ5J$fo|Q}iy)(+lK4pi zM%yZ@!E*@om0k|smZrG#p_Uc1F=>R_7p&0|u9OKP2VRfAe9P6OA5!Y8^u!L##OaCy z7=8YC_p!m4I?r{F@e_=nqykq8}W{|Y4usfN)rOD zq!Azm6u|?We%TXVqz?qGKbU9222WU%8$vzy(QcEU0wdk-uKW`?d|^kFBC8oeS}d2? zep_n1P}bf>QP^#tt?wp#8lSMco+ImPr}z}vcWKq1b_RLb-}TJ8tb*VswDGJ9ZXBcN z_FF#Tw+y8oVh*(p@@asc=Ix@|n{`bDTNsigNyX>@jT5yEDojg6)_90_wc?D>_cFe# zR8~O-YMRzK9T#tstG|9Toj;j4Zwze3vU^yTI{R)>jnY!-SmcuoyAF_f&Z3iYD-XJc zyyK;hr{etCg&j9A5Frj(fuTalXh| z>`jbU$WSJEsaQNISjqssl~#hzbq>!6u)tJGN_iHRfICTC%R_w{Ey#KbSs6WssCZyE3^+2jo*cqu>BeBATT0Xutf;2zX4F=W)_!nBOl3|n2l1H7- zsy6H@g~bDeE2HQt{e>dkUUO}f%hX=7k10?0Kb)>ryAJh2I;O6>PC?A%jN9?#q1(fk zR0rs*zQ(&&ojgxkt_=W27xT(Ps;c{yBEU@-$sucWE{GtTh;vC|*ALlf?G7svM)+r| zPWE7K#k^GxvGC;M(_agWtJA6ot+O$*da-AZyWGH#p4HrhG3I8g`AE}!M!Hc}A1<1D z9UM;_m@XBk7!xxucN={Bq<9#;Gs>MgtXQFf=(V%tnqn~a5{rmOQ|Ro?dV_^PV)zFm zJG9lS;qxLIo3gQmnMAR;3d}S_k2tDQbKf?YpU_E-3-3|LEGi|>$?pk|kSElRjL5?{ zCm?k@rIigl#F1%-CuXwQt-jwsXz+Ge-lEt2R`olLen9&+Gu}Zp`q#7?hRf>c`ulB+ z@o)2$|3;7Be-RwLz%0I7Is*EiHmN;;5LIs9+%4V3Obq?5mti zzUFMVcI$$+4bSt5F9$CNLI@gifw$hcSD{!rLZ(XacO5z(Gn1gZzO5M1Ra68ydAya|F)!l0vLG*3<*80wk6J2qR zvjh#0l~A74qQ>D+NmE?jDn~01?>fv-6N8`GGlaW?rR(k?+QXTBjRr{NkcW!$vdT-5 zvB}Efjtt`%p~Gycrm5rp>}mdS{=4{o)bTRZK76vFf$$CaV?<1rLJe%WIVh?%yOl`w zyF~!OAf!G3WRjJw*dWoVt!ifP@;+~%bv9=-dbK^qfS0`Nz}Q77>E?oNncfiK&+@9~ z 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 OfUKXHA1c?cyZ;A3zch6K literal 0 HcmV?d00001 diff --git a/WEB-INF/lib/commons-dbcp-1.0-dev-20020806.jar b/WEB-INF/lib/commons-dbcp-1.0-dev-20020806.jar new file mode 100755 index 0000000000000000000000000000000000000000..a599753ea40e6ae27467b19707bb566a3a9d1910 GIT binary patch literal 77244 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 literal 0 HcmV?d00001 diff --git a/WEB-INF/lib/commons-digester-1.5.jar b/WEB-INF/lib/commons-digester-1.5.jar new file mode 100755 index 0000000000000000000000000000000000000000..c2a7d9d3e369574e7938a50329500e7c0156f6c6 GIT binary patch literal 109096 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≻7kwR)?4kv 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 literal 0 HcmV?d00001 diff --git a/WEB-INF/lib/commons-fileupload-1.0.jar b/WEB-INF/lib/commons-fileupload-1.0.jar new file mode 100755 index 0000000000000000000000000000000000000000..1ca4a9cd31aab5cdbcf1fbeaadf805cb41d09995 GIT binary patch literal 22379 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 QC{uq?RKEJlf7hA+0w~Z#ng9R* literal 0 HcmV?d00001 diff --git a/WEB-INF/lib/commons-lang-1.0.jar b/WEB-INF/lib/commons-lang-1.0.jar new file mode 100755 index 0000000000000000000000000000000000000000..43e515c31babd52b9931dcd6d1c9af4f23b607d4 GIT binary patch literal 63861 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 AqW}N^ literal 0 HcmV?d00001 diff --git a/WEB-INF/lib/commons-logging-1.0.2.jar b/WEB-INF/lib/commons-logging-1.0.2.jar new file mode 100755 index 0000000000000000000000000000000000000000..aca1e4132652cb9c8aa7fdf4647d61bc740a1b95 GIT binary patch literal 26388 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%0A|!W_++shbKru1br41U@Uxer;v9KuDmvA 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
    ~u=CWlt(5M#p%IT^@XWX)qoayD>xelJKQ=V_BIT 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 B-829I literal 0 HcmV?d00001 diff --git a/WEB-INF/lib/jakarta-oro-2.0.6.jar b/WEB-INF/lib/jakarta-oro-2.0.6.jar new file mode 100755 index 0000000000000000000000000000000000000000..346504c6d4bd7232f0776a4a0f8a32333cedd93e GIT binary patch literal 65368 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

    f?_@@^UPsYC(})@C1t&b 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 arh`boyEz%oeE|Rl+%=91WoM7zzx^MN9TWxt literal 0 HcmV?d00001 diff --git a/WEB-INF/lib/log4j-1.2.6.jar b/WEB-INF/lib/log4j-1.2.6.jar new file mode 100755 index 0000000000000000000000000000000000000000..be4a9176c35a7feeecf5b70edf070ecb5d13ac5d GIT binary patch literal 350525 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

    #;HkDzoT2vLD9N%J~isBVKYtaDOft-UI8h1 zeL7r8)|wsj*u1%3Xf^@285^Y@!(9#cxPIO)Vr(ERtDRpKGn_({$J-=yzSNa$|FC?? z{_U2g)hz|vez1z18jzd`*sMg64;W>|w(oB4t(BB@4(c@M7|RI@GRz#L6dXwxZ(X-6 z0#uCLw~$#4fiuBI=%|n-8Y!TYsVYSU{|tpd{y1)^f5YV>*77hw)5*VVD>?<;Qulnt zo{2scU(A!7-&*KsA2DAE2eixHk%b}+^AxrusVE)a2ixz3nO_psS-�a>StuL(vx* z+A<+G7ogZsh&z;;V^4))90TP8q#fJ{5>6$bGv6#qh0TdWM%tF@LsZ9B6T`*my{8Gr zA1M%!AvDA~_7fL$g_a?MTeLY_(ZWNyv{ns66q8c2lX9+O>kB#m983(+JV;xsdn<$l zIQgbp>jb-VSY^s!HBX1<;5ls8NycWT*gQC&QBAqyyWzhr+$*z6tH_B$!H9rV}V9v6DP-lLjWDTD|0#!k*yWq zZOZD~Ti#t$PDxCnJh@tV$_|?PqK}IL3U6DNJiL^?%a+=^({mtE5H%N9MC7{elc`n6 zm{6q45Nu~nuI0|Sr^;0Ym`&6|v(}(dDz#vou|%g0V(=5=;lR&DOkmYgtt_!~CQ->B zuma*t0;r6IASy2cr%1L&y7sIihc>lR}-xo#F_k-h^J|5{*sOUPIER=j#Qxr^C*WSq-=NV zR)#bhm^jF>Bb%okQ)V8KT1T1yEg2p#Zw$^^v_9R`=1f4ya{s-UeKu8%;jKKTZsTP# za7~>Qi{z^2c*XUUW)qRT}1m%Afi&bvUjmuw@em&1P%TsCI_TqQGs9KuZ8H?nz^As!NUB|&vDL90gI^9()c)gT}LAXr`vfwEumv)^LgRWPIT z=+)A_D|5#+`_FsaPD_9R;=p86E8x2L=D~I}_@DGig?_w)KHwt?0pWeY_ zIOL%4gfp_^gpaoeg>(>%Ip;7|$-{(F?0yPVHv9K;P5e^(T7!Rjh%>83E>gR<1dc)$kvP}Lh zt%hXP(-Z=2m74oKw)ScwZr9c1Z{iSH`x$9Z~{--*0G`dk=#`A}*ak&cOm8(8je zWgBGe0a;hLw-+SNh^AW-`qS!RPE2d^=1k*ERYXX3I?o0{Tr1xQEPuw@X!--Gf$iwP zM!gv%IZGr2V9r~^3VrLkVkc4>zP8FSwLKhfXrJjPfT5DE*COO7HK$q`hkkE`Q#QSG zir8|y;a!k|_5p98t>K;NhCrqZ`4986_NfB1*DCH-YAZdpGj7CqBKmLzP+~GZvohha zTu$)ehmmp=psRwd47sWDj$KijPa&B|c*@-(g7i*AGbL(hIO$eVs*>hasxjAOV7f5T zWuJK|AQHYKBIB~;o!SnVca&k)^hcU-Xe3k0Y|%5_e%7Jnw#*f5*)!5XydN4Xw-wm! zLZ7(n-XZrTK6VK5-1@8Kaaq=k(>`9?%i@L1_>f)u5QDNxD+I4kinaZaizTaR3ca(e z(@lSu;TeQXGXkY6yXsS&8?XgDS(&?9l|Y%QGQ0G$L9<2>n=>$5ntmf;~3%a%xr3LSU_W z`LOVX)`WlqRJD6h@sWa-h-7pUaBCMn)Ay`!49WNs<7y48!qEFjc2egz>*_@g6cy0ZG2Y2;3Mv|XhOYB{`=QYM3{HGlH?5OOnI zX;~vqa21`V&UqSLEdlG##B)`5#xde);0dR6K(c3pa^Yr#Mjk=kCxJ{a2+WJ7v2oGm z=G3zUbyUq8!au|Y6GDUn?{DC_7}|e3+5g-AKp|rjeP=5tL47A{2O8-VsLRgVb2`T#GS|Es+K)rH70w} zVL2o{3Yc-9gzYB((q*I4>>S&~LNINPhGt-mK?!c%gNz;;+8_j-z0Iu8bs-~oomZf# z4%`K%vb6&E6Z2X2V+)9LXm{*|?5?CyU#uD|mZ}JS_e&;uMlUP)JY*b$Z?r^sGe$+_ zt4INX^G~Jzw7;3A)UJXw!M3{liEFcFL=meK335lg}r~9@GTKFrG=Gnwk204}2Il}D%f6`Hw~I#Hp)(%R~DARURVzcVeNC zxuc!FlcCxFC_~B0Ti+Nr)Gu7*2Er;@kqBTgg$dC$Pyv9&q$mt(SvlcSK(%nCO@d@Y z+ocH`wgvv%airmw|JyG0>{QayJSLZ-$=h!3eiS})3@^uu<4>=q5@Fc!_LCgX>pvee z?I$`u?|(b-cLxco5Pvf+__0Mv*sDaeV%x!=6uaou#E3K2=n(~hM}aa@j>0Us$y+EY zWWwu%rwXJEXQ4ho(?Q(HK#FU{Q{PC$L+k%Ar$hs2Dc|Dd(=|$*O0LWB=A%DZ@smh# z{c1>|fNZ45QZN{y)8vTHl%1iELGkLaL7eH@^zKkYy}Xg?q^mv0{I0Q)WH(kUG^*?} z?WYkq{wk1g>KhKugUIlN3fT4?PNNgo!3RL!(P&JYFhNF-W>#O+hkecgUkTYLK?js2 z@pQGOL5(yVCjs%? zh$)in+MTUREXb5xxj(Dkvz+!JNsPo-9^rWO&sBKixy!aTPt@g|;5H0e=MuDC8Vt5? zF@B|P#cfs3n2+eR-rki9(I zL2@2jGsbLXw5U8gC_lSs`O&vz%1XsZx5+fgvFj>i?&wNbJnZQbN8-(86iO< z0+&|@w!v?f7uN?;^8-=T+lSa2=)=(3@Spc!_aZ&KG~VwQ{PY-c&9-iIw2Hq4-rN3%l*ZJ`-xA4YE$*yw(J%h3LT?t=M`zVl%H#i-+S6O zJ9S9D;?vLg9qOah(69H~q~({w*0<fGPl z59rlwUu(Xn`%SijxL6RI=yNu^%l5IWYP-+(9KMd<2#-5i?3W^hAs_081G@)A^eKiE zhNQCXNc65aCY7Sw46R81*r5@EC@Q|X(S}huYWeQ*Ici?lDB01wO5^V*6uihoW;d-A zy!gaMQ~fuf-hc>tz){M}KDG3xCCZfO4U6v=r_n2z)`uy`)Ic5hmf>hK@v|%rrFV*4 z*HGe7!Lu(2eg8-dKEsU&S^T&Z;=4RSmoe(Z-a);_D0G;IKLzq67IiT{quWf2wefG! zve+yK+zMrOK_KXbBGNg)U4l~2SfoqR@<1W~lR|}YD>6{t{4(gzgP^REgsw~##wk@b zH0h&`I{C!%3y}i%9(x+!r|^h&YZVaJee04~meIl8`ZU_rU|{ry5}?>(A&ke8RSn0% z1lI+gSvU`0-}pRdbke}?X&V!tBdOUJ+dg>7_x&W1hI38V@LH3t6q6>dPhS#s0!4t% zqnbX!LYk09{7~MQr~-j1!-nT4#c^VfcwV)>lx3w7)LW#;Qk!+lq4EZ8&my<#*rcp1 zC>^q!b)C7IwA>DvqK}`_C-#*tB*G7>0QI7u5)u<$vA;$ApQ&kYle7+!62})7;iBIx z&NVfWkKuDCIg_cS0$60Gvg>idB=Kxy|J)7}sV8{(*BZtDAaxt8=KS5|7JkTxZRUU) z>L5G-?!Z6b!(O_JaK#%0FLq6g`m`4mA;CSV4KI3agv!^$!MH&fO{F_X4HQ^q>oKXc z^CBTv#vY!dD9G61p_1z+T_8$nDFv2wIHd9pb42u=c%iqQ0@SW9+E4^pW!#QcHj`{E z#^g=kD5l&I5{S|~G)VlM6tUzWy1nf%G+zqx$1<3~e8SdBwQM(CRJS3e5m_1Ab?-Pe zLT@h$VpI7BTYmUWZh65_H$90oAF#j0Sie=)5(3=6<3*~&a2Lwb8%Nl5_8p-7l&TbG zCZcur(`d7-T&ubb1$Rz;r@O0Y*QRnwNKE?S^=5XIh6NQ2P1(Ae9>gL6p!9QdW6@{K zw9c9{>D+mNaU&!dn`*KlV1`Q;A4|^WC_5T#Xp%Mhb!D8i!Mx2iTyRbklKT_KN`#*U zcgR&1yU05(>B1HtKdC;6XQf{_mnlnB1bYM;w=PCrZS#})bk#-rqPh{QL^u8y=qxS+ zvjP^A2y6Xr)XJmz;#@)l^u1W5Rfy2fGtHvGtu?$zxD^ugCgvm*1=BMddgwo-+Dg#q z6CzKtJF{2kD=#KPx_i{plc~B^CIjPI%(`-@6-g$H>1^ob`{DsqPW1=YwR43=w5LQY zzpNJh@y#O}4#CO-Z3)?Wr&&Qw&b{_AxMgf6+u)l3ANZtfu0Od>jCOT@Kz*1Cj^e^f zym0UTohvOg0}24AtP(r1fzxRO7QKgs(9sY}p<6_p6*`l@4+?P!s+n^@=M_9-XtUsv zEFVNDkW1BNY)c!5nL7c=D$SbeIAox(9}SE=NQp_(7D93h z?z2BN1L;)s#daI}$;v6<*8zMlhjdRq+(?*rmL2}Xlk?ZNIiU-l(Sp-pB-? zokzq_jt%n^66Rsss4!bI)|bOVe4B8zqJ&pU4h*rFz_k;T;xf74EPa$3Cvgdd^sf%P zbCt;RN_6j>0Q7tKcQ`0D%{$)Y$-6Piea$mvkrkKNT6Tu~5o;~wik1+5!wm7t)kV9d zI7vcdje!&AEnE|Y^U75fG>p4+AdP*>kTbAWf>5J2IS%4!`URs(6t7oyDLujiX&aPY zNT6D+s84?vjHkPgUXxNEUnJ&i{&mrbmkKG~;i{Nw=$23fK1*ar$VDq>u?-#>Q4HfD z_VT5`NfD+(XnbPQ3#Y;s!6}RJwJLIu4{s1i&l3TJcZZQ=(qdxQ8h{#|VNHO2o$7rk zx;H1+;t*2qdD88Sc)qr(^BO(=#VP@PLm=GMDBCjPW5Ny|{JTbyjdhb~t~Hg-WN?pjo$X<5lK7P0DVqdlQS-o?Y7PeGMgv}!WXOk`EP~-0^LF{GiVkV2S)G9Sn#{Of)TI#va7cz3=;Q|AI3h*M)LmqGg*3x?wylY9uIX za8yquJ1TV6g+mWehaw_oU}x!UOqQS@ubz-LF}_0zN4k*xL(@aki_3C|yYR-KfQWh*X#X z?Z*^!p{v4>U9n|{4za*;`6%{<8i_=@+Y0};W2-TQYx4D&b2CWzFf1bl3b>pxhb3G%v7ajAwj9N&4v|6CnRSE$7ixy zg*kL+6V(p2USQ_h|c8_K_OWYykG)n zRFOpGM1xZGAuC4)7485r6=i*i1vK$bx#T#$jGo- zwPZEz5xXFqb6CX6ttX6SM+0MCp-u~FS)}~^#0_!dqLes|dUs8#pH-SBKadEsUt^>i zLl@VssD!1HM%W{6oH;Wj$Gjg08`gvj`L@=7@=p807$E={{4DX#^Sj!G@DHDM;C$eF zmfN$!9O@L%8n?KeB`2#SnWivSX8Jy|}|m z*rh5<*3>OLJ=mXG)xocNmw?YPdZOn(JkYI652nEq6mh^I#M-v?p;g}}6N%T`-D)Af z09&zk2>w=AQQ#rob=~c+HWc_i0aK!XMZ?~9gpuQJa_95o$mShLi-r4goOnE2!n=}$ zr7aAHB#Ar)EvwV0CIsu`n>CIF8h9AP8onEv;?83TEq=_X!n?C zAN17^nhEu>?As%QcEI9Z-KD+6){GA^TvJMWLqc!O?uv;%L$X~%)A|jZJpD6|Vj9Vvi&~xA@@~PxQ9D2l3+M zJX5pe4T(l?MQMwh;{%Zjlp8esTmEte6it&C5S35xu4nV4ub}6L`*UMR#5%>3v`b!} z$(p}TljnARU-!`Y$Nq8Mra0wdOs{(w;`TQ3a6*pkG@(Za_9W3eB&Pr(at_OZc$)8;!#`bky07a{n?>Kw;ve~ za2gq3vCVsOyo|R<8FwUQ!$E-Y!gD()yD=OwT`vT1X>Fh^$9XP`xVZ5uw$UT$m>KR67EmguP5`zHDeu$4GvcUeYXYM!P6QA(V;VyZ(Hnc;h| zxMoG6PK?tY9NMvSYyg3(FS8d_!jCsu-41DKf1b0&(LT7;()kwU65Bx+?mkBV45ddz5?unp7b5v})Hdi2%l&w0$p(zL?Xg^Ui( zgypQ7^FG4Dv`4E69y#KB&O#P2xDbw>QGA?d-tYz`0ES@gaR*zve6AU{`2ERtTppC+ z>k?cdH?%f}-j5=o#L6?yg{! z_`_tu5651#0_*65V)F@A9+|2{^Yv2+u>>EsfaIe>^p zkr3yR5HBC8sZv8Gkx;%W#}A{Zk$Pag1!B{HvK`m73OJv{g}>tgY$&CToh@KnWp0T^ zbQHA-P10_t_iw~qgDtXZ2(REr-h3n_Hc{i*8Yoaa%)~#fmj$+_MfaTefuX(#5o=zK zF;Q9h?TlR>kfQaV1dDy{v(Alz>D=pA|IDq&=`197{thbVU+A!&k||NuNcZ`|R~U@Z z@XV2qm$UM$r%kM+jg=lehBkcfPQAT9Ud8Zbg{LP@$GW)?@4|gInED(^a8h%1nX-J6ac9AZdvWEnrEK#IgOx_xx`j zo=+o|AL=_UR_nWZ{XbWuRNr-}oue7Of&Dj}n$TO@nK4_^|5r6CXy@`R(=-;95S9DS z*hE=J3E2$Am$f|>K~WeXBB&7&RVcR~9*RoxhInR~LWPFbeJ{Qv=+B6)X@kH?T>=O zD)a9R8|4N3Oar*(`Wk?eKcZn z;q64O89j-XsYU2LQSQeolqJ}HmsyvQM0lP=>Qs*4m0azM3;<{X&NrFU9jwWGnwnZD z)Q2w5q=+uvc&gu`Z-hbA9AqLeL45)p3b5E{$*YH`RTu0dO%U0n#ZZEIka}D?X#FQd z5t8g5KkUkgj|JU8C~@F+vmiDHa3DL7^J_^mETrkzkvxVjAi0(*)u?)DC@^IAn~FIB z&+Bn1JdjAF?RwtWjx<-oJ=y(tu8qg5m#r&iza}e{aTQdj^VgcX;+v_?-Roy2#*B&D zClJNp-`MZGe)vKYK!d*!gKBp!Ep>K9w{gO-!U9IsTH4`Zf1XO;LM9frh5SM(N6}Q) z8u%FM0olH!0%A?>%aPLgLJ0Z%d;`kWEmKd@F zLiCIG3Na^aY7;UJv7(L46ijZ>HQ=BQYj>P!C~4bc16%_>!NgF+encW}QRjlnQH(UU z$puL1U1Q)jN_-u1z9sOqEMd1W4)^2B*W*D_&X-#`j2i_DAv&rFks_AdS#D*vaLWek z&i8uYqv?n{YqNAYV}{7zK`v!K$K5-X_h|CK$-)WorAIdskZ$Yr&hj!g`YLQw!_2lr zceEL(r#u1{Z*8AM$>0&@eM5?EVVRc@%-wjVhnpyXw6gBja%1U2eU50VR8AMox2V3w zJ6p{x{qfjDmuU+^jrD0fmp;_dj;Pxcb+Gl+1>Vwdqn)KGX^-N!kM--~pD1JrfLSlL zB#?`0Z%f#Ux~=KFXp74UD!76CisO_sbpvTBSBn{S|3{``0tqKu(nv*+580IN&!CGlw!MW^7tyPr<2W9>1^S8~e_Q{t0T4nOtuvGfe_^bF#N zZ}Gm(aa*%@T;5?4te)4$9?r+v(ElR;A)Bio zm%eLLfq$$`8UG0`g}&j^`CCS+;9_CotmbI(zqZjNDXl5a$)o6m7E53o`U9cX{Q6ah zj+GRF9-9IeZBiZ`7`SIdF?7!WI4KP0?0Tc+ed&fdJr2a*7UQ_g4AHbL=puPLZ+Kd@ zs$uz#F}vc6?L}I2fiWWdeWpHdke?bH9Usj|g_T_ItTxe&H3+*tZ!guyDAaZ!raRot ziaF1+6KhvF1Z+=5?l7 z+_r&WuzOb$V&AbtI*d@q1j7@&vxN&}A48h;*=n|tP4Lf>1Z`%%Od`^#pwfGe6(G zlfibhtDxSeW4gWT+RZr@6Eukx>E;~y@d*s=t=od!0sIK{urj5`%E4(cM~oSHCVOm9 zSZXl3?fjp>N6hO0d-NxaLAf3MZQf!GMmI>HVi}+P3S9^o5eJ3Xx-7lQLYX?VI>{F(nBpKi!|B572 zAc$q>jG-(yt@DRG_bN2$)Zpxve}PskN&%Or5cjL)6M6}&8*(lu7`RgRrE)g zH}=gA1G*d5_pc{IQ^49bc=SkZ2^w>Bg;NW&8#hWX_vEJW0Gnl&d70OfO&Tc&VfF-t zB+&4;lDPBCkJ3yhn;a_AD9%n7rWkHmEh&^NI>9uMeH{M+``4Ks+v|>Y{vN~kf1m6B za|uBGk7wG$$lAh4(8bjBzlQQrDra)U-$Qv=TyuX-br56BSh_dMu>xwMOS<9PS_)f# z5mplMNSFh~5Ev#G&hF~;7Qh)3Z-MVMBCvNXy{|qpUO4tc`;DEVpPMGsZCGQP(&yTaK>pWPuQTZr3zU-$xPfQ-2pX;%&#V8v;@5Mg^F(an6BFG)aVtC8m ziZEggz|M!L_+mcUYHsUs$@ zRpq*G+SgYDnW+0)p3cIkk4Zr)(U_nUm+R_IS_033>3wT9eMid%^ z&m0tK?5r=C$#|B>yGpW=e-GBrI+R?{VT#*5ab^P;n0iMB!LLfBiCJp7`RH+asifAW z!XvGg(VAcGTRA}0h|JhygH&k>%eHsZAg+sosT1JErckOeK!#|E-};}46cpV!90xDp z%9w+bT+z+hiOvqLwG3HOWLyRmL*V9`m?RA97K1v^3;SaUEx6rMiylRMMBwv((rnRO zw3KO`Jl9%8G}=CLog9!Z(p;D3J`$Msx}PGVKp5%q=~L@@h<00I=kjcFiYU7+aR=}`sdb6LYmSW$0VK$Y#_RDh;U6afj3DA zPdOCZB&pMXghZz#*?;z~lW?x3LbBw zFKe>TX4aR#m5i{eKz(I25Z;0bNwCn2%j8y0 z!usRzk@MHED%js5v2m2ca(6pD^uT#JaSBhn>rR zi1jGdGdE-vgfE*6*MtjJS}83G_&k2X2{a%mhye4PR3t3xSwYP|wre(Rv8F=xlqjh9 z9m+wwcVS;Y^yY~rmEdsZ_rSS__(u2EGcH&sfL|Q(oy>gywmO-aKIQn~e?(iJ54s_7 zA|L~(@}P|Hp0AU`nn~vg23fDdFx>WZ*q9-0rE3l1M@p7+rBX$;^A}*SVaT|~jE_i2 z7|sNc$b=;8E<7MDjMr<|ha*xGY7qf!bYU$NJD}t34if!dNUO`YK8X0@%l;mSDWvE9 zp+vk$H+8=Tdv@f_JDRCi**5Xu-(LnT($nm@2|Q#;++AF4`5Fu~26k<~nx~Ax$gtZ=MZ@ zuM9K}^ZI4~i3H&*Nmwlqovn?Id+UluR6GZih}RJslRWgCp9f_}TOvbd1rKG;BN1z^ z>U(J&*PFt$Ie86B4*_dRW@OF)Lo#)JS?i0+72Z3CGz2wzFpYJXN1iopz5Gb9Xs9u& z)ZXU7+-TjU(<>7#3-ZvjS|wv~dU+}*Pu&do!II){81itl;3?A;?Wntes6Fos|I>C% zV{rf)9;;DeES0$B9rieVNYbOdVQ$XzRovp3k&+mJanE7)Bx5cC&8^mxh>KR=hZLo) zZqgal+7FKZXS>eqU|48dnm382s8CwiTkG0PeVwS>rb9+J)1ryHb9YPGaRP8EQ=ABlL~h%`CiH64jFv z@lwO~S>*cRJ`KgE3~^kjgLv8<@zF(O8b|N zoGCihI`3j%eka@=CAqvCh>H+$y6KLQzaTwd7%FwAq{{TYB4_E#NS5e?n@8qi7Rut- z%e^0#!fYRo);$#@ad#N(Axq|H*PLy`0Xz6jH`tch-MAI1+;OQ=aYTRFWByFbLiqp)j#f40A>DM|RKB$k*bXK&AY+TXcijjk}!WdSnERpaSb%RRa?q9`8 zj{tTH_KmEGk6Ajdc@X`n&@SZsBan55Tcg%Z`EHoY0*MPhmm?G{L)ciX8fP&}6}$Pc z_S4zHa~;HIFzgkL=iP>ClneAEkCRXlagg#dB!aEXx!m1Q*qSZh)zwpD8?$1z_0&+; z_m$^nLxjhdLjRf*Mpw5INH1$UEYg5|iopH+H(jY;-yV9{L05U>ZDq~gnpdh)60CM@ z2$VZ9>NOc1o?6m`c4h2yu=){Fll_Z>%F5~RTBS9l7Ld4&~9M5v^|#?+te69`LE!Z|6AD(Zx`dCNX8a7za2xdq}@+&d zFBODjP;we*<%X9wZTnuw^oH!0f3s?nEU$hP-}_2EVE?J42K?WypZ|8gt8(VJru^-L zrgzAvD9c!ukor~3UuGA+8e5FcMrgCz2-Zx(F5~~HZ>*KPpgf_-$GLvdp#uPzfrlUnze<_nOfNqmqd5Bw~n$0Fn;zqhH{#iEZ%ccp9xu&o# zb$fQ%32o;hGxHh?+m@wFpDku~4bKel-Y_R%zxB$K+><|NEX|hWqPw1j@?+2?GT)gG z_nzH1sa6N~YLAOWIZ<$9_vjDPTzL+jvbLrgLwGr58hwC& z3Dx5bjsFpqsLCYht7ZGB9WEN8jr3r_p)Sg({SaGwauyF>H*H;}4bx;}&ZDiVh z_-V^z&4$U30C@6H=0UeftP`Zxl6O_f6~jvyqNnee`5eMkfpheJzg-uQvBEoLATf#% zD-ewVR7cAt7`1Obb55@$e7$f5#1x01?7{6{qM4q1k=hst*FXaNP<<(#K)h6MFZ3%! z+2PiUo==hAl-Z`2X5;%@^7|YcJ?E-4xKdPn{FEeiF1cNFg+{pJopdB>LeZ8EWmqMr zqTqL5Q2RR4=|j*b&#?k@dg@$#Mfh(&?HHsbO6o?=uNa1D7q{tbckvb-@Y~&gnZ0Y^ z7-H)gfN$N3lKq*3ZO%!Qs5moNkoNus-5|l>@G2et%tg_0$uk=T~NL}Woc3>KQEVR)OGhT}E zf+2w=O}))~27fz){-H-LTSLk`MQ03un{Ng`?~)0URP!R9X0r2Wy!Gh3VXF0MiO=^F z^a4XHHYC^^eE09x5*Hw-f~Z(zJS-IzkkU_X;k=tpv2-x*o!%}tpek-i7>;dmPmt3q zqhVKMueCTe+Y%_^po#Q!fTF7StQ}c_v{xPGCE*>{uZg5bZ$CKio`fI4i&?Dmj&^q`z`P`H6Y4hP+^ZN1E?jYF9OCK+34J}q|{I}C$*?|#*j?OXqGsCONR`7ZnMLQmam&w3}=?5 z^R4rVy0y6(Zt&>h^1WzWC#XQ%5P72oVnTNh4aS0EAcK3<=1Lge|F+dkJ7JjD5rNu! zn&9Ddk{U#w>zw!svbB#JY`>FbTB^J`#sYrl(96nqL^Hd<>2yR7Sb_6!m`BDIJmUUgtww%SqG*S=@nSfio~FJfPR444UW4Tg8(S_b$Wt{s}zqb-J(Q6)A3Z!>^gi-kn_&tBd(G!>EOIto6Eu z48b;wKA^Sb?D|5)Ttmu#yz!J?gd2PzyaArX1L598y6zX~PC#O)lj7%(Fvhh>W(g-w zWNI9bYq1LQ%6bHX)aXXB)kk9k#AvN=3^JnCg^+qrY_O?ES=3?&vsj25WS~SbN}-2m z^_!Tc^#VR~c4T+@fF<2k)(nBb-59Q6>?#pzZ(vGX^-&6kloRAW-({|wkPW~BWje^k znZxq4VpPD+jt|-a{2wTKQGHD?tT)E)zVWn4XnrWow|jrTVG10ADc|)?_q+M^{zusQ zZ{1M;HPic_in4#v)DpI)cK-n`MJqcb0TiCTj0>vTqUTc0h?riqtGu-x+~r@IYb`68UWc1pN0V7xe7?RP(G08#DzO5D z;mo!ne6nQ7BeoJPxI?(002HL<*d~g+#9!InIuc_@tf~mgKk8g;p3bt&JMB#HLQU?RF^r3o)@7IJ_jBy4`5Z*;w>3s=wX!jEz|$2$ zI6wDOU}<0tu?!pqgVfAjejxxNPRR8=k1+^!pz(?Gk%jpb2!bktID|`p5Dg_(vx)p^ zs?i!Pge~5XAPX(t1eux8buxZ;K?_rFA$WNOv?OB? zm-&gB!-#05--PX-Mv4u!FbodRi_?}<84I}miR!gmpb}sSd1rR|_&4hU%ZdSx_st}4 zf8Uw^=lhc3pUPedB{_Ch2EhMY)flBJV~wna@Tq&gjO~@xB88JHAw@CG86AiW5iZdy z2T{n9x)lV1^vQZNxaoYs@|gbBB%dq7L!go$Dw#RzAED$wn%hKmS`;dIQ5L%CX=B&< z5W?AT7Rydpn*6vv$UUTJ33fUI!QR3kWF%QhcG8{3ASNVbNTuI7rtp#~d50blXtPQIIX6<0v=S@t(3= z@}sgA!3r*;xwxbjvK51=n$sH9)@@ahx+q~}6M~$@hYKf>XiVeIPu4UAm>yN~k))z< zgI=8Nt`*6w)@b$R3-q;&nVBk6Wp(jI*Z^1a-f@c$?>1u<692&zhv5y(wTSM0L1OE! ztvFbglxPmbOR9-+^Wf30BAr^pzBbcBxHOTC*$HjGHAgHI^#~d$5cC`Yxd^2qOn;TJ zGcZ%MY@%9E4RDGRjyrD9qy^YOWJ)BUKO$1J^1m*Br)v@btPU$-j{I)?E3*~pk(i8< z!%ikoTZyvP^~(LM~8dviRkxepmb48)G0>TL%+T6zXC6g z&rfR&5`Z&sk6rbD1M|S$b0WCuSHS9I!Lh5h;ZTEvaV>w6X48$iL!W(9C*U-`6bLV0 z2eb%U$=vKJ%u(@04jlCJr8Tl`zu2l&UX#<~Ih!4LZ=fGYEX8S4cBwR$X@!z>+R#i+ z=rrgjHT3EVLt7v-bahvhi;W2<{)p=;jdbxdjf_2s-jgmoLwP#6 zAEU~VI_gshC5eyO69G69^`EqQ6UL|wXgjHvrny?cc&phpU!I#Ftq5DFEPOKxCxQap zh~)_IR-vwz_p#EK`egbUs*FQ}ScM^0_`L?YT@4wRkS+WI(g)C1#mNn|%pKKHp*tdG z`M~kJ5CKEU6Fb13G8c&4Ze1uT#9O^mQ$^;OEn6{hh34W^eSDMHe;RLoO+K%`;0NRkvSPJcoEJC*4LV?%nHO5@n4g27%lH=J3eh= zR9)khJa44mhkoq}pvO9=*?YJ#A08qU4y>X9P#>G6^X=CZzu;H>hX8d70ksFu*$Cr9e4FZVSE(&^O?(&nd`Rb2za=!#onH?M-T_1Iq&M3D zgwF`&?=FS!5XNUW;5{7jJxby|5cwIM{065)gjN}`KT$p0LI5Ay5ZF{01#?CUAL?6U z|JaQnVLSjK?EvMGw^PX=k0O%TPpXa3e7xZWuGX)kjrwFS!`(eJkG3?Rw2m@$9j-IV zhOkYPMQx(#lK&e!NHv3E6U%EMiuT@NA91T7^mQr<>;|GUOo@z$NCq>!@3*Z({4G*w z5H=BiD+WKV$UO_H6%KF29@ZZ<9N$}CATD##gsF_W1l6CMb_nfMGA#+y103jgX-~_v zUTcpn3m&ieFP6t(VCP3H^C({C$;Whun~+tH$ox>OpYm@Q6Yv+wIn5(BZ`Dj<3o68Ye_F#%G&kq%7a83f3h+sdHzgvbIL=V zspf{0$nMQdqa;a(si~nVN@}&*z33FbXT=VEE~O^D2s3W0^+(XAd3K30>iZc+&NDDj zE{a2trV!UcMQy5q2GFghLD2LVlnuk{Qhp=5Esep<$3aY4t>WX=zJn3K+LWeIG;PDR zW3toY?QcgtM9~1jI+9whzGp=PZ%S0X^6$njGNz~T@It?z&clRn=(m^WQot;Fgf^Er z4@dkC>PF3JbNO{jLZ_cgy$XGl$rj>r$7(zT2&WYtz{5_nxSOd;ofFeg4kXN%30P&? z?&?BoN$#!?7lpfbNu^+S4LLdsT2bg!y6q1ss~c)a=Zs@D0v;c4LPJSF{*mHTsjVc| z=Jd7K;$$B6K?06CekJOIEs?ldHA747A`mPS_bwJkI%QvA z(h1m$EQ~S?2i0Br^gTSBOy(Vvjro0`e{J?e0f*@Z)mtSu^j$XOU6#t1ocjBvHRBm> zGTmKlu$aD`2wsS-Zdy(;w*U?lG`gh9u?wNUe7e6FT9{SU*$CC#%99*(tp3O_VbR)J zy1YfV`aDT0@}uTCga4}j39D=Lte~N&J6oIeyF>ZVV(b)R>~zIcRSZee#)Ho4NPw#= zuQT4gdIsNV0WV^CpX>j7T^;fy-4O$CUTsU9_FPYMk`PZ{9I?X)PysuX_73xaZI*e* z#!pl4CMr=3^GS*%OTKnc&x$IRBkh^~IH{95pFw@camL}Y;}CP=Xjd-ZG5cCw#B-*1 zf*IYbJV4IJx@c0NbgY+l|Ey&hfx=eC&3B-ln((1MlzfPq)~FeSlx|>QF=?k6>E;>a zw;{*TEy6SHjBCSl&oegSzI#6?#B3fK^|no>Da#sGPEptN()9n>xU5G|6YnHSpkLv^+?0bG<2B1+7?|k$X%ZenH^1cW_%x z_@L7qaG>Ypw|i~?Q#4Ba)=s`l0xH>$ z8RE$zne;l^Bil%;@@A2`_$kta#@~3$(D^9ln1oyBGaGU-xM)65KP zG12tXXq|SDSx2@7duZvD8r_SpgO_@&O;y!(S_~ltI&UepMiUcR3((=D=jld7h#dh| z?_@Y+zDNqyf$LfOBM6ANgQl6q_b>olgVll{LMaHk>my2Ubo3kUr3!a2`o4Tp?4=$1 z#x|%9VF-lT$`lYc#G#v(+gC){?TkciBatqVn5dvf5?PhgdL@52VTiMK?}+qzX(pzi{>p`4#+ASQ)GBJzd^` zPx~iHd8RS1$R39yX?9^_ zwZ9=BrdRM95x?L*x#oj?61ji*-q&lrjr9I}yz*tVPl4hZ)L&ixLRVSVIqsj^FUZZ7 zki}E}u%V92m8k)v;WHtYbO1_$;7RH?Y{U-24RJi^5-urng^mH z@kgRosT)xB4T_M@^}nr9)$S#w3EFUO`025zP;$kor00CEB9_P0Sir=)i1|e^bY<(S z2oy}{^_1x~^)mUC<@B`m_4$sCr#)c#;|Q=V#>5*NgYCQCpBn)WTsrs*zIoqMiG8bbmb>U@;C>EMivnXa5ka6m}hNm<~Wa!K;I%wvPKFw4y|3zoPb*J!prL4l`=oK=|FgtW#^luek5_FUR|R`NDy zKAou-lMUA(!_!h(HH*Z=6oOVtT?K_*xjhjj6CM{`Jp10-tOdKQR_icrt+q-hZ5mbq zr?{d;irru>S%y?&voqdtQ)hz}^%)GgEPz|fFh+1vQ-h0e5N4!{RjgXhbaC2W7B*$N zc!zOSdEC4uv?U-p|)fpO$inHkE2%;_6Vo=){c zajLOV(bV9}ynYT@(o+{&g=Qm*F*-P4I$Thu1hi4%RbY8?|~N&P@JsgV^p?V~>-5 zhZcRB=NFx`(*tpkJ#Wijg!NYxm7?t*YWiThx>>g%h|Riup3@m}wZnFQ*3UTk7m%It zy6=Ej;kG}Z7o?`-k(J?heqXymd=UbX2029n*TjZ^3%jd_%nsOn1#?U4;gOEb)#qE$ zjjEs*y$L5~qrW>mA^aijMoWgTL?)4_g{9Kpwy|#QrfuE#(0@TYz{{9w2AT=xo`DPC z^LP9D&hG8J1c??n1wXGvZ9hLnKi}2GoQfuzvJ%OTx#jMw0U{LnbA)gtsb3ZJvupp3 zI>1M!*6#Q#xzksB5TLz}LFedQvdiqQn;mjBeE3E@XV1Y0`(cJy_Ng4_YrMf%cbTK{ zM2{+R%J*CR!3^m{jn|KO`3mGM@Y5&a{$4rGyG6IdZjGB*>g@4)^!f;rm11g!9q|R+ zU!URW73dG*l@l{=t8&)20PWH6mtC_*TM}z;zB5#E;+c|y|p1qd3J&;*3cjm^% z?tBZCTIFShIspMeC<6s$NLOU02=equVlVB70(E(HWlPfKJB2W=OA29)o?fS;?A9ZP z1HHdBzPTYK%TWlqYu!+IAj=UDXJE_Gr6sQn-Ecw_E(R^KAbmXqV?%(P8xqvI(Ls7L z2da7LeGzV&q|-A;Do0!6Vm-$Bn4;uERH3S7ztQc#le`JSUIc$IlIP-v`L5%LjD2EB zwX<%uS2z8;BusjyaiH&9ZT*(lzH)wCB%)u{Yu_iOLfJ%6jgTWP?5?xN<_YB^`wkin zJh1!nrHAz+aB#~ej^Sq+n`DQv&4QiLyl^+Hqotewnda}W)e27%Eq71NN|ZRwd_4+J z)c_N^(o4}-*NGmqKdR~JrNEov`yZ6OW0bA!mMpk;+O}=mwr$%scG|XW+uCW{wryv2 zo>R9*kI`M{8+CuK{}FRNZ_JnxkbJ$T=WArY@Ux{wMySuS6^&82TY)-qBSO}lM3nrb zUxX~@tDG4F7bWujm@7H`s?LCKdV1d_l9WF@f^6p7{Gv0soK$o!$2X2mu5SH9j=9W8 zH=HL31uiw+qSl5bUwBhqJRv`3ZUr|oXkQE0K+JRugI*r5Z)lS9H7eedE{<^j^;yWe z6Jb~V6V?RwkGdY?KOsTZ#>!pR#?V;U!NJx+Oy9=H>c5?$Ny_Iki2O)jASX!xmlR|U zsDt&uM#frEP=r=(#&bXPAzy=4IC7%_9y!yQp`o@2MrlXoh!|NL-~~b(~q;IZcA_ zI}TclsAwGxMUALSnCdb%;Z@XIldO81c~Gqc544x=K25+(YKPh@hW zpPwD-^J|r(&be44&klo4aqMJ~#}USs&@u4FQ(zvWAN2-eKD; z73&l~!5edvqN}e}&Lm6`s=y0#iDyFcz)TMA+nD;H3cj5W(BhfHAT&Gr@SH)o~-id=|kL3%EZ+sdjn>kj{t(fg#*|=LTF`p&-cIO^rQ^% z29zJlZTvV%{K2EZbK#fZ2Dc^j*R3}% ztF=39TszjST|3Udnl!c7tzv?P}a z*VSHV*QU3Wa-+bmCiPm8?d(t+;`+&9LiGK#z^gs`9XZ-_Rc}nUrMs=nSX9&V6Zul= z>qvVoR|Ru^udB&A89nN`+TgB8jm1`fPox+fefz>pXFGhAr1*5->dDBSsF)Z5S->DD zR!v{hh+<-9j?68WsK%Pi=J8a8sgG&-YlhB~vhg?dT#4#HGShj0N2K|!dNLy5 zY`6&F7UHFJdb)9{RQBSm+k(dULAh3a(&(m{(>YxaJI1nR!l!ooYPIvAQ=K(o{$R6( ziBe>ic*`QHG#zk8Ug?sG5+(BD(`nuBO{oPNoZ5U5EDBKP`8nx}d^&>x!t|m+X2}{> zX=^Y56=j>8vqdUJ$@+=jhLxL%3(A#T%Hm;u^PR92lSb&1xKb3$i+QONo*ssX?8?5s z6Lwvkvq=~F>D)mj_^b1TEhF+)4XQ0`!3fD)J%da;5SF3l#wf};@@DPKoJ&Of*IPQ z!0L1zSftXKN#48Er1b3)PrUt|-L7#JL{_6JAh$72nQa7GZNoF%8u|k1zgVt(^dxK# zq=&lK2u?6KuLpLNz!5WXyQG2y5HZyrJD*4JmcF&|rkz_@Ky=V-yP4?rR*M9uSr>eb zGwNe_!|wM2OfP$EfrUP?YxeO>7GRiM6^gKVMBkKhWN?$}A`M1cShLi760;8zCr^$} zB#S*vaBjp{0wF}do_g2-y2h{`70an2NFYrdj4gh_qlnQnTb3eHCi(6h4aaO601B2G zPdA|NQjJ&?CGa4K8%<1;OuOe9UxAA{wVw6%a9Oa@s0WAni>u3PfQTI`?2MGTQHssb z1S;g+*+IRU#J8i8!~9BmEV%?A7iUarVq32pBfDaE8~9<1HJx89Tf^<6)J@62Ne={t zXyB@8OzaFD&SW@oXX87!0BWEigo?s2$?zyPCnW^>NXby*ZN3hyg4iC)rj=|VU+bA* z=&IFXQPY{vuDO^V&v)X`G$~?RV0lrd`JxvIcE8bEQa zZ^UQ+1Vb(aRn{3(qxuT6RdW{wH_kfCSW2(njxir^tw8|CTIq`tf$sTmD4gS0;afKgv*e`j4`U#f?R{1;07MOIK zr1=@=Qw+;$qOkhz(hKyiO*Deoi56GsRpzU6%r&fPl2^2X55{VkyowR7i8^Koo04B$ zz}6>fOgGn4`HNs1+Pg}Xg|*@VB1`ENr(2cls-JwKY+gSskr{3z>#wxi-^l9KtHXEY zKYT(iLxm&d5AN;bVKPyv)pcDpb3L=56yEYwD1epBENYfSYLGx{r(GYp zW3adVPa*1S$hD@ddA=8tzs>D`p;Tlw&jW|o9*Pc-TYRx|{GLzeYsp*BKA#79^hM#T zCx%M|n(xwJ77OcV0Q=>rEh|M?F)J7Z?i1O(8SMp27-d#sgAb^gCu8qw}Lx%$HQ@PkfF6 z#i`V;#&*PgBVCDTF<+Eev7inQmBJf%(iZBe>YuBlpto(`M3#fUqq1me^Wc86_o{N8 z=YWT7B8i|-;G>N>h+$^7T1XJ5kn(`t6fUv4F!)c_MIZ%FJe$9X1CbIzpK=QapsFxk zT*Clvpm-_6hnEkgo*qt1X~Pmp2B!P$DSSWrhl3J$x2o^xcvI1mpXU&KHQg} z?Zr|@{9aWAp#MdNd}|(G4^3F{>H;RK6n2vWZv>*fFy%xkl)dD2(r(;p54!5+;4$6G ztI!3y_hOs;6rWF|rgbvP>LyJ+D8ONy78p{rl?1k?H7c?`h2}~GWkx-%SGuMgqLe*5 z;I5YIJyG99#8Q!ZGvlLwGtoFTnKyQZcQbP?Vfa-u=6V+!ygp1;qNSOjj*kZA_=?n}5Mkg8o({8Z#KN1m|DPCGN@dXxCaQ(UPm zYXEfdEG>gax$AEZS_6aQZznki9_04;F>+B`PxHmXhta(O@zVs{cqs z&|u_{aNQsm}Y@VBI>8Z&S>Ux`eitGsq6Wy10ZzW5@{exdMdd zZG%LA!e9jcARj7*n#e;>78EJS&Lj)N&J)hf{K5tZ(#mIlAY(}jpbbBvpJ>w?+|fB) z(1Y;6IEg9(PR_mO3n&qtp*Sfj0uIkbo9cUthgP1^c-cpo(2>9_&92S`X-~#5 zN3AO0*MJ4H;)7!qn4)kqPk2}hdfGY_2aj=gBIE}4{WY;u+r@&t%OfS*FB$amMw#l^ z@55HjCePHn-`7E)#w@}pq7euxE0?#;E5W!sm-eOZrUz@Nq{K{6x6|7LJoTq|+_t87 zqDe`HvrziCCJr~HHNwI&UzpfbfxZWf?$PY>DQ5K7d)CXM3h;0#+Xan%PTpK1{4u|) zvc&hrj98dwqC~l%A(JUXsSCcO3t%OE>MU#$Ao^8Vk?kD3xkMFHII%O5dK_Wd@hLFc zZjl5=Z@Jxcgwq7QZO?voP%mSmrUwuXx%q91O3d7bVB$H?9<8I;a@-uDdBRwnQ=nSw zDapm#uUJpUd@o3;uB0QvAXGe&{cH`fVQg9ILf*WTT(%sOd9tIx5}BD)!?Av}2rP9R zE@{ak{6#}1+r%SWbLm&h-(Jep{wh3Ijq(~`^KxCkeFaJzr85Eh!F=rsR1SU<1f@dv zmKuxQ+&XDxvsklBagr4&Nz@*SsrNtBONnZwSQBbD?AjxnzlPtaE{fIa?UE^1re!#$ zn!KU{TkGD2{#|<|RIci6yUHqPWV?WAKZ;f`W?SwlC1M>+Tw6f65C-~Fth*<_!%w#= zh?z!wMPCl%>7ZL67jllan3;$EwMMV8W}j&hJQ|SJ4D(E{L2^V}dz>=*YHY1<8#dh2 zIlw7_8jK9qTH3E14|!GIY^M{}N9y&)&I~?OKQ9{)~JqJasdWAzpj6+ z1Y-Vdkx?vCWWw3yPpw`JN($<>+NG7}21%D{s=~}=P_RLKt%~I_0TRBk6AtBa2 zviLXmpPgc)TpGYg)VT^XikgCvE`H|+>JfKL;wz>?uM{c|P~u(Coe%u1{GOo`(b^qv zvu}E)Zy*gHh$!BWX5AY!Z#;SrAT*#k1vKDCE+#tZ{ep*dsy`7g{3o8sXjQ%5*U)L3 z&R&>Z;1sAFu5+5D061naec3JYfI0&H+4;7FezJKZS;dTe&zw6iiWlRc5nu4B-!MbC zfq zDe;JueM9ekY7V@){++&tKj)n}Bpz>Dm8Er|95)tiIE!DN zdxr-{5wS?lN+XnJ#JWKuZ`&i2y(O9r;uqxIy^s^l7TE6| zo>@~J`4!WoXm;nH;h(Th=S7VmNjWan*7r0xrK)%6*OXZ#I?gwQZJY|)jAQl|I2Ev| z5RXNSz**|6G%^?Iln-1;Zset)-p(B&9B!3Qh@73+3?O5f<_i(`+`woGazPYh?fpTv z$OL-YY)rE-MW^z$X4kohag=BfKZhb%l$_J=DkNgF*9Qj7?^4`=>G~y{!w8sA4{-_x zrkeV5tR!+Ms*CPxJANZ!Afid-Pe9MPcZQ6)g`(W>XpFGVFl@yDxcXwem{{y;mPXkY zeR{>(9CM!PbVuNbpmR;Q&O3VHVjqT_5dTTlITUDm(Y5a&rX(LZwHFwax4ULn#DC1TLYUw*Qp0 zEK#?}{R1TFKEwA`)AyFVJ-tU-oJTs~1G_!0N7VJ^nNiOx_ABfU3AVeO3vTkl^l45W zJ}79fPoA#cJw$Z)H-%>c!I#0`VEQHl;Y`_2GDxmDuXrtNx=n9?hi$uRqc(-Hm!K*s z3!3Jhe4iBji9wt%Ky1qomY1B<^=*n*$^$08^}*<9&3# z3)Eb=lyQxr2i-aO@6Ugik8_TQdoIen)eiOlBzBbG%e zYb#>>gc<3m>E~G%5}|1_6O$+dfm@f0V;~m@DI%0JSxT3kN}*`kVQZoB4QC8xe1%Ok zvZhVBS!b-IO)<5koz|Q<*StYW=E5!(sW|Xf^Bxym&Fln<`It#0uHA`jYRIYQK#3(ZV{oHH} z8QPc_$^Bb*m5SwPTt(cX2l?h?^>rbi#?GF*!T16rtX@9_!K1)rmAKv0glgS_=oA}W z*ASv?ESP*IrOwLH-IUXINhQiFEnTlzfo{xFWHSD^S;5>&!`Uxvi;& zwWiYaH4-q$RDk~aYPzL%?rc2`=Q_T&>*~SB0>|fMWgR}9lg*lWT4Kmk(GUszs-|>ajjD?Uu;Xa_K17yI4km&^zjCD63tRw3FcJC?GHv%9oUl|sl8t$5)G&rqrN?bk zFf-Te4SXMf-#j`!*J3qY7y^uBaqv29ReuSN-+VeF>~rC{>#h(FO8UbeTqj{9H0 z#`ZPbF}@kzCb!xHU4nJV!o)ftIi(YwyZia6Y3Ve=3Czv-_)>oJHbcSeSb|@NYw`I$ zzzjQ}{*fXKMUS>l7Tz)hL{Z~|5Z@RE`~pd?3sjZ><`M#qsU5!M7F{y$GpeZEC%M=M zL6|anx&`MkW`e!6-DCWU6Zx@32UrEgUYmJp@ZO5x=Wy`hJweixvKkljwtiti1nRPU z-;%)6(G@~nbNl$|xbtqbyRwG(Sbcp~=gLn(sFAKHKJ0NOw@iU^8?puH-(?Okg0N;4 z7F78Ti_2n@at~e);lYEhgmNZsYy?fmw75*&0uBLW^UkC=f&zNTfOpp%d-(HnAA{>G zIBx9_bC-Y!zSXqaolx~Uo4yji7|wOb^v(a*3e*@ss{i#zfiL{WOA3L1T73PVsUoNE z;AreXB%tqTZumbBnj$4_*`GZa_dH6nO-eo(MQFJH3ap+ye;@#avQ!-$Qs4Uw%sTO< z4dYL$+G8)8VdO373#wNiP~6K7?9C{sPt5I9a_#^|`itH57Q5ro#HQ!zs}gRFw?n|1{p9EXSh6(I(ty|*V z!dapP96?<`0I0X{pG!%DEtoUc3*?ZWB50OKG&5nXerP~e`|-bILrfbibkUq3By{F@ z0p!s05P5@<4zBcNyEy#|--!v~u5-7%tpQOnaq0P#q{$)pXY0syd-oDaA})Txg9tp- zMLiO1f^2a_bYC6d?#p#(8eT0+(CO_10-GdF@iP|U5IS0W5@m$)DN6#4T#pSCGg+mK zV!b%G?O$u^$<373J|R4eb8785MOO+pLTtkL!uIk%Ns%XeenW2oI&Uk`zak@p{k%de zp-aHnrDqK_LQc^oi+BTyJb3UQ=<%8oVk)Sgkfblrou05v!Op8@XZ;-c;Ic$j@o*t& zz~ncgAVco1;lXLNq%QFv@Y#Gre4nx|KnFjK2#pMl=8YUrxdUP0;6csSq^}Fq*{yM@ z&(M`+wv9VP!FBvaz`ObUy9UTSgTS9K8ZMxZRyDZ{uKfe2mk`(_+~B!e#ZH4x8t2-i zp!i6MM0!SKPX6n*$iYS-GymtrgBJLo{%3{%_l)@O;-&vU3PpKKM1HuhCy$iWhcyc; z3ymlZOv`wUX;6M5;W#}!I0?x{*>0m%bH)Nr*lSp}&dLy3;mBC;cmO3~CZ@=hXJnZf;6PXj?6@Pxlp zW6bJPARnTJ=FS7VWv#A@1qP!uj{RlZQ0)#qH`Np~IoSFR(4G|F=ngt|g`R~ZNicNh zchc}(;{*qVK~|}7I#z}gsLG*izZ6A+3lgD3qQ7zu2Z?X{doss`kFB3`2`1z4b9C89w&UD&tqaR98$`L9;Oru>beQT@t@LWQh@&r3 zVb9xY2hx(~B-7_4Ul+e|wNJ3}}5A5RpF{4W4{{nVa z`i_n=`qsw(0e4E;|Gsq-^b5K~L4wq1TGP;YCDX?Jxhh5@j0+58Vm8b1O6#kYYPg7B z4J!PWz^x4XH|%bw1k5n_#W#$ex7r-9+8U0xCZ=__ee?jCS4iSlqzU~NUeb5>*MKVQsdb~kD7Z^5p+7u2yr$r6-@JQcFU4dtWkgT~ymwG(gdMPZhBqCn z3w5Rg>_0i7IHglSd&zOb+)s2|?9xl^|X{rl}gc$-fNlnRWJ`;$J z)xxr&3a{yFSp>J>^)2_>Rj)}mk^sry+9~=gh#^1?&0W2Q@ta*0cY_`sj^kz9E*+-p zI`Z<_l*PchhV5!Weg~{Rl9rQdFetnxgOR3h_=g>%KovqIQYFgM%Qe|Wru!iVvwl~Q z3K~j7WNm&ka`zDEypM;{V0L}_ln=_~nw;`Om3eb0HV9>LQBkM)seeJYcejr~hl(VJ zQymzr&`@9A&3csU$JqE2{j#XGAy{R4KrC1uAgQ9hu0_=?ix1{MCc`>IUG(uQ5D>ukHXHQP0$2{*XSQu zE}@qzJzVOYCeo5mY3Qg(?wiTZMK;NlT6LPn89O|JRL`~8JP?POtM0;;>lv#Wq^uOP zE42%`xZUUX&ZE{~P&J2Sl9;^RJM@%Vp!LVPYM|PX=k?KI@h}6YgOZx6xM{=;W>lym zBCHneuw-=ZQB#hGZP5C531%UpFfM7bEdBNKFaMw?3Lu8*HxH&}wwE1WI;4F#dT!*) zGm$DWSJro*Ld+qGq)KA;n_>Qfg6Acq9oud4g}ea_?qy8g;P+eBo^Kv0wONCf-x)7v zeRsT1ONPgIy9qRL$c9mPR}!SHHaiiC@i)a_NS&vP0S2CC?))nm{Dne}j=+v@1>XW0 z6udL|@+U}P_!Fmer-2#pf@eR&CTA^vptn#9a=gUjB;g=_-&BnFJBqhp zwH(Y-SBIx&_V!8Um%WF7{x5Fc-=mPS1o3V@aHenkS@93)TeWzfhGnCQwF|C5I#~p6 zk#ZE?kvDnAyeGnezn)<9pK!V^06|to2gGn~MfNFdeq}o$3I#{F#3~`a$l@EK74H%CF-Pve;6w5Ek|8Jw_*T}}*$aRw-Ob&Eek^SN%T$JU_qHh=K?W6jDVmX+L%jG0!j%dLDGAie z73Di@6=Du2bu=%zYyq|Y^<(`N1{($l`&SU(R%&0H@w4) zz1FVC52Ko+HTayxW~EiUwty}{LnzSrTMQ})6&%^^JqHTlYj$`gXuV~AsMHcv-h%z9C#+W>r}sXVpHhqk|=pV+J}>wEe-=D$EJY<>6-5pyWm2G8?n=PVaa zpfMg$Xx`I{Fn%%w$SND8h;>rzZ3Z6H4eQy~FQ-ergdZ1iiw*ZqvG2D~JDU{Phd5)9 zkI*W@lvVC0cK1R*YD)oYpDE1|&srryGf zXCe;-I`k$Fxr{e%S*0QRK=cWaP5ni}^8)DgbeBs%WVRR3^W!0L?H_EM8?c(nWOw|W zn#lBie}BXru!n4*P=X?g8^|RRqzJZW3}a%TNT?(tj6Xn%q?iE*_h}&jQ^I33V+Gie}Fc9IP4vT#f06737@ zgvk><^BQ-~pSZ7XAmlm%)9AGiWVOXyEY}+!hR(;SM2$P2?Y4(t#h<@H2A3d@6iTg@ z@3k15i>NlQ|4hK%eR-9#pI@POTDOz(9(-1tqE8Q8fCs?<`-@y#P!Xti&Vh|tm(adv z<4Ihn2VBIfoGu?GCP+HO)R?C&NXZ1ek3nLm*;^RQnL0-og%0gX+!lfkjCHr`qmq5@ zr4oqP+~zZJtScR7xa?y>48B=>BbzJ^qMuBcSWW+%Ib4Hwbo8mw%4*$Zq}bxIJBptQ zqUWNT7F}~AquOZ_KF(xVHgsmpbai6JytPgxH^zsS!WWJ9ieWy{iv7hKAg&Yf_$AZ8 zCTkj;eDp}iubvPz)Yuai&IesB8@5wj_Ig(6I(H7#X-3qkjtlc`7r?{6HA^04RJ-qx zEJg^<^b}buih<{td+L2-1Ro({)q6k}=xd(ugS19>0`^8CgyG8-0I|)R>GBX}mMV-u zd>rQzTfY+|i2jd3WKLWGEm}!UYQ8O3@AhrzA0W5)zDiNI;~(eS2c13cvO4B|4R5F$ zAga5nddk7YX6Wa?U(mrA`opO|<96sD$1UIge%wk63I5M4$Wr_-7MQHpJE@Z;d-V9} zT|z$(4h$gZloJsN)1%=?%be?XIImhy(MW%&rjn8Hq?W>xeUR>FHsdQT&%D%n9!(r( zq}d*2e!P7ElUEun_959A$Msr6y4o%G5hP1dWvJm7ZjHGHdNokK_1y~ZaB$Y$0kp`Z zYTN_R>X25Zq~|$c&mvw%JAKS}FF13|U5g{LW9F@)+E2h|^y;X6W0rJEim~>w#>ZNE z_<8-Q-Hty?GJ91xhFB;%I5=FpEh!?E-(cxgiz@y;S8l|i=V<{KYY9|ciPVi8FC zElZf-B7eiay>`%1$ZC2jpy4K~jqa!&Xh5$289$Q#ttgrr-LDUnCntfWY|jw>VsHG? z^&3cVelosS7X`)AM9pLL87YS`>5Npa=m~!4-7jJCo83CUW@Ls{?E$-?QWLAa;Szx^ z_D)TYj`|b`WE@xvr?&^E7qvVImM%JWtsI+iL;n)&w7-GNy^wvHzWxEQ;Q^7IgFB_d zF1f;&vUO}keW*M59LsuV=+`01(d&Y=u^lYC+JAkt(df9}0slbG?jNVG!2cd{|N34t z`kz5pq$vIGx3LMYM!Pl{fiS-u&_HuyHEt6Q9=8~gl>)r~?!{b|O$t@V3!b}O{9qTtMp?Wha4HG@~id@UB^hg9V3-bPjc>U>VDYPo*C8+h<>qssX?e$zl;I` zYMkm8?Bi3Hb-Rn;$w@Nk{!JbzU~0_@_aCM98MY0x`oQviC@+sa*wUOcPnJzsYN?}% zeuS&uAQcx6i8~f^c9k^u#7-e>gL!nsM9!tNS@-zd<>Qwr8-?%{#T;3=7{5HdAEY={ z1sT7hJs_*{M&BjT7*xe~KZpGX?en%(M1ZU&lU0F_17Cn7lA3;k+Q^}K^gI)1-c|a? zXg|no=KLd=H1K6t?lB#_{^y7mR;9Iha`z(KFOi5;BJw#2L1Lp+nRU2!G5u3$HT^f{ zz!WFspXNX!g*w^TRa3GHNQS`4CxFO3F1VbbxTyY;eIWn9lcv2yRP*cN*I(e^Ypf8G z*rBixHF#M3G&rc7vE_{M>Tv|61U-M1>>Cr4h#COf2#kq$-Ho24ct*!WNpT|z-MQxZ z_g)%@5DtOg!-3v|^`EfOp8)p(=*a0NzyT!uLm7~j^E{Qs2Dp_vnlhhi{lul@i@-Pf ziKP?|>=Wq)H$w|&?b2irs_|qc{iNPj*}jz{XRBjPOXRT z>VM6F|I=Zl4ymVfnDjN3C4OauhKG*Ng=v0M5W6?h8aDH-O(J9-K8X zkQU}&y>`6ztg_r3VWU~wT(;O$O2prwd=99oscWX|WPRCgeOq^Ffm_|Q^5;7%Z6b?{ z2y)}Q=Q#75_xR)ZF^7}uaVr3}H`v15Zcm>pf4_qR$9a#Q>x$?NoYZAEFq$-L=C%u< zasQno+o3NE5#q%UB24k6 zZO^mM?_23!66Ql-vd3x9_(NjYhy5lT@VhEkm-53F;zl!5#di9{Z85A!qRXYTn68F0 zYm02>hS%aHi{L}2>$3*Xwj9`&{RR~Dt8`yB{K1q|Wyc!(`*=X2^YSmJL{-m;+j1DQ zL{85c+x~#Z<6Cxg5BqKba^S^>n*geP=n)*IEQw3VL0sMer!Z;=4RAYKmRY=cduygy z9#q=ZfJ$24xD=^I(G0#Yj6LT8R+D8iO@lKz%EV(xyof8+A3I61G^RayA1aR|_~VSf z$e|)pt-J^lM3I4d*{@4jXUs!1i^kD<&G}Bz#|*4!=U~MBbti6f?9$L*w=3$<3uas% zGISH{Na(U@+PD&doJ0F1%*}7!ni$V-tnba>1GK3!76jjT&fIy{NgQC-4^GlILVG8X3uk3L>`< zQKj0Fq%a1`*QVzmJkVk}q#}mpu8RE2En^se>{`mDQArk&Fywb&fP76((imrABirlhRb zouVpbM3Mnt^c?7}mAO?*Y~vJ&xRJ1GPFVwH7x^fUx@(T2{!%!V&0x9j2h+bH(CqGg zM&y5X_iTR(~{{K#@GQ@3RN;O4ZCh~`wjC(o@ARO#X!YG9JsLT1Xo^2qC^=&qLN!* z*vVWW>A`6Pao^~Taxf{@A+%&gTcHO1u2zI5@NqV=8oF&-2RmU=q;Ty7VifsP)%BhTyIXvHEZa_2GM|G5W44jT!9j zx25DAmqoP&nfB=xTKI?u(x_&;8vRWxTRP78F>%)NK||KbX_TxbJ6m0%5H**laKh5N z;Wxr8lguE+PlZ$}F2gqWY8X;aE^^O>!i5U@#R~BXRmLeC8ZUTVgHctD1u|sI%Eo;+ zzLZCrRXogj%b_Ki-gNSI$9xh6;XvE7S!VbBc9(E05-X`Blt=$|^1IYrQ5CF}Nfhgt zVuf&X)8c6x78*}3rwKEVdY#h93p&^IM~cOafdXb4sQu8LkFv7fY+6iq>h~wbvxP~z z(Ujf^`ezWtDC-oB3E2Ruswz^P4vxiYwvH&HggCLlcIf*j)lV6BKItGsTS%SQI44Fm z`a{p`3$wYxb}e&RU53Hz;-&ssnSDOU>xa%eK0aq`;IJ?6u*O1zpp4QG@_Hl9a;XNq zRA{hXaSyh;DcHxyv`yJX_39^j?OH2ac9}Lm*}(*RV;{13Fegz%`+i&n?ES#4{QAQL2ARjQ?0@i4} zn=cu$CcEA`^i)Jh^TgaQZz+bOQpD$yvyVkZQ-d|j&u>+;D_2OAJnW7aW3C(@Xs6rr z4oz>3f)G2jchOxRJgmCEU4aECY$C1G0J`FAHhzeK2`H_&j`m5w-RU>KA-!U6m{DFd z`o7KlY6!i$fV=%}La1&+z;(iz{ir(m2997LG z@OG?lhZ^}?JCg!Zud1;6BKapC)|zy#a#D7n zxnpIN@k5&EQySYAT(Cq;)XS$Cw`L9Lv#WZ0X&k|?^h;$}Fa|18ab+ z;f_3npy{LuBG=K(*SX>oH%a;okH?=dze`@JK^v$nFK}>*)OX1bwAbz((TUz%35A{G z@-$1Qlp^LPzcnYO1oPQ^_z*$b!DNaPab6uRUi6*_^i#QpI|8vjr;x>ybH}=0O8SG2 zbJ(sw;i{OU;8DKN<=YR3f-~IK>7=M(UcNV7`s11fzmsY%i}<1zK6q~Yv_-ImLKp7%GI7d zuR(yX{6j~4HZ0g(|tC4afr9_L|lJ3Ip+Vq?X$^y&!eZA!Mulo_w zDM5X@`e1iI1XCxq)Yq~BP+i+ z&b#fHh$aabe3?zCCepWdo1T13Jn1XHorFg+NISQHm ztFh6C(V4*P#(HiO+Vq52S_)@I2EAwZ6o0!tBrE-9KZ@8rhUDO!#DrFNbah#rNlZ^(P3ooZP zz=2WZK*dY6J3Qpj#Y^?7uYe(P_&}bEMs`=+9dSE_cOUc)CVPpAt6=hP!DR1gO(ru7iK2e!RoiqNH($ih1uS4{n(UE$>9m|o` z_+ENwsLaOoPJ9`>{z)op%kl=2rr6NFzvwq>J{ecoj^~h!yNuGes*9y*jFmZ# zKhhAZIgYh60n(Hf7k-QAUopw+G+2GGxGKIjX3d(|bdpWJ)1o;{raFAp8e>);gKSHr zlvou#>P z&`{d+x);6FEgNg4_H>Ot{W9XkLg;l0>!bEgB~{gE?|CiQ-2QNSK9=jDi*w0XWnG(4 zwz;++ncV@iy1a-;m2`)7EIMPlld?{%^g_H(4{E`LO`mkeDK-T9reD*se2He~8MycR ztPSXr<*Y%0rewd~^x4b)NnW4rb*DU*Vf%*pm)O4T zk!TwC6Kg|^`%l)8f2@-H|8=58{Yz2*2?r=nv{6SPEAn+K&R$`x5_>N# zYcJ|=Hp=+D*_Odl-hAhYE3Xdxm5d+f^O{v;#w-}z5l8@&-%(~dz1H8=i*XA z7^KSGAOs*VK;)wtoV1B#`0G5-KWJB(wt2aYSpR08n&~QsSEe~rlW!56g@sVL4PUq@ zLaNl)?z058ja8;2*?YIVwb?{fcZt_;9cr*aR^?E7ZXYRu59@-?TDE5t(5)?eDJtM<{O+Ob*#Z!Kqzd{8TMh=x_ykk zvCEZ~Z71}=xikpuOKe3bbQh&=FV2a#S$?s5OoKrj)*~3Ch8(6y0xEeO=AQyW6}&oz zDU)S-g7;=gSG|Msp!5K`MLaFRx&G##7|t+qxPNx30^V|Pj9Wir)>_+GmnTXjB8UbI zC{(1L$B?>{vQ1?}t7D?=eH`#%Rdfqm+Pz-VPh-EypB?~R3W5nf2>Y3B?LUZe3yhNL z@#f!(wuP5u+`CFW0m{CF_i$?rg{F++*Szk2Jfr$q%vbTUaRqL)xrw{<22?{9L~?P7 zP0BpN)vsvk_QCHbj*UX`>Hzujf>G2ViIq?yKp~D=F)Yc}pj5vtTFX2(!lMJsZJ zBu^QGDo}i~n^YpaOt9z`zS@m`q&=*kmW+eAKI3@7&)IgOYNo49=@fsEcP=sB$0l|>hOsE(V$wXK; zwOsUCEZEF1%JYrIuPDGi%w-BXd#e`9CL!HcZDl)Nc~kY>$Sk6zJ8+*20!VdhpW@VX zr@6Xt3hw#Q(@|pKR`dLnZ=297z$OrTH9MM)H^Cso#u<;tt@?odiZM0fDK3u{wZkj9s-y5~>-)_`@YijwQ8}4E+@c_o#w>>ubdYkd_sMNO?Z?4 zASON67~|UUTKTwi>`oK-e7(f$Z-r4EVr0f^4OVZPEK42nPt2wsrB+kQBSaa(aF`LT zBYiSPqft}7DGHxxS~Z2fqh7w@4R;1(P6sGd>OdXu=}M zhL^$CnPuk?Lyx34)T*znv98j)jj@p9fwNW4TWm*;+H1$Q8I_#rj++irHK#$=Btzs^ zmxax66$Y(3)C5kC{cPR?#@>Co7pBkI8y(FJwiCrCKGc|KJ5E*}a9Qq)u^iYWZ_HR{ z5>_Vl>S0`+%5-&4Q?Q~XB1~3T>{xtJcc@-7+g-UbCac^xaB^aWWn>mAW>OpFIwf?9 z_2t{_C=^Cr5`7N5#PavDOLUm`#fAADbqkVdQUjF5-+&Sy9LG&Jh()vftQ|@VsMu!` zX!h;Pfut&cY~X0lD6?ESawD36AtlgxPAq z7OZTP)7hz6=`Mud#@B@lloq^0n(VpAoM--MH7n!Bij^BE_jqs)zuNMXgh~CHQzLe} zOP3A7(Aa=f64qDwOqejSH`@?4WXL3)eD?Q##72)yv008ow&nMCS&P`O3S-Z26b4s2&# zLPu!^Q?`ZHIK>)E4j|7tzxcAWqH|?B`-%=VwThWsLaS9UB z=HVg44&%0$Nh0^+IoWlMi3QI|_A>e7<{$k~d`Ryn=HLIbHNx2y|3GXceFF^q6<>9y zEDlY6Mqn@qCq*ESoEbxPRlg>qk`%|3f3<;0fX_9YMDoxBzZyrVbk!^DV~@{<8lHt7 zjx@+uoH##X#DgmFL=^<3lU*TDlYP84g*-KfGiduH91r zv~i7LbOJBRfdJ#(;}-5VQ8$RjrDN^I<_lsAmkanL`SZ%skHADcjLt6ralur4F+$%k z%08&x_xD#FW@=-4oz5@BVP9~1Hn>cv&UxRT|N3^Sn%Powe}^Nkf9py4Z*4i0%p8pM zjs688S;^?z{g*9=!k8?GAfh*4B|K$)n;6tbTeUOM?DQ z$4!11#KBkqfpH~%DBw_!LVKyHQ?+LPnqY<@bnhQ!6sSa?8jHRjUr-b(J61f!e9|73 zaOL(X)8I^}pWbLw5luC@t2dI9yRJg<>|d*D58hbrY>II?svEcuH?plzq5UW8+rGKOyi_hKwOR)v*xh%+MNjZ=*p z8o-TC!4B&plenIfy&~VwKWQRm@8QmlNeqDOANy3ZYP0oFN|e>e4m|snQ+AHBALDbz zbBVlpjiUyGim#ym`WyW?rU$LQnKJ9|ugm{FX-N6+I=V^@`ZkUxwhq?+#}Ud=Lm5>Y z!sZ#8^l+gVY-14D6e0i+PaZpnUDp64q zz~cQUfTjC%=0-qmr7guElkuFfVMhJrPuGlw=k)}G@8<)Etd{s#2o&wh4gOX8ZFh|6 z6RFx?JyHKa2+1}d!l@Aa!o#C-R&xYqok$XzzI0ZCHv65Z%w9Y01nS~!)bO&){9d=(ViLV&1#myk4~# zLvOZki5sh#UjpZn{2fGu&)t?q)hknlzgg;QX>toQLehK9x~na5vPz7nD9ew6$5*3X@E9np-*Xb3pe>o5|20t#&lbyOLR1AKyQp-0uS^QE_yjgb zWsCASX6wo9)<3e4T5r1E*Bpz; z%}r#3h-VPxwDRct+zDby@&#?x1b1eyvPRG4?-s_9rHB@$9hlF6vEWvVxs)5x4m+ zj4OnMnm@Yryj#fQj{?WZreBgNb;Hk?x@m@g*il_sGEMs(?VN@pM3hLHmSj9+ETUAQm*TO~ij|0!ljn14gf4u)p#{~0T))L^`TEAC&u%{s{p&2e>tdbqdH!|~P< zKZ$}7Cuv&i;Fv%`%;(3Khmc3(smFNJ6P=(uS#iu;Y%KL;8mzQ8i=aqABM`Cs4aqb! zjIYI4Tr4we%o`r+nlI+*WL^bMbjE~|vmRRXy{_6$yuRzHr?2c4U9XF_`%;k%tEYW< zt@3_ZEtP?s_FFIp+~sjJ4xNYoC;=dYZ*?$(${xUNY+_BlwgcL3`fga8T2g zYSZ-|rSYlh{Cv&(?8)%?6JrMQvXB&Bxl4L?7h)qSiIh?+B;iV~67Eo}p8WmfY zEBlwb(I&8=m~fNaJpO^ZMsSTZGQ5q(E6yhr6lJ9`qg-FZofc`>^J^WG5$8@jZ1&yP zUgje$lg$VVO=Dl^+Dp{i78y5cFYwI_q=>X)wKmBgb1UQ#Jf4@Kf&uue8`HBqW!PtD z8pDs&tFz3f{E;eRoyppBB2LC6PTBH5?sw@)lZ-Bem~tiwlh~w1Y*QIQuKR;62%IRy zrdtziTA?5*&TXbhW_%M1hM0VC0SgskqM;|H`RBwnZ%9t2! zd(53Zn;f3AQszVm-10VVhmvGP* z#}8OcT;5tkI1)R6!X@vSFh*!4;76HC;{L?hbri|$9mH|G{MgccQNTPFdm3Mj2B)E> zWK>cshLoT>yI?aT0|H`fWRyvzyN8T{u@93liQ!r0^%)zgkQ%%_<-*IlqSh){>1*;c z8DsvZY_HGCO;ZP}Y}_hMnIp;ts@c~#Ck^*<6QP`2V8E?c8xs?=bjb8@Jk-(8x3dwG zOG6hUqGp@gE#S9kRfY)TVpNX(||3d<0wC z2BKsI_ec(IjrJ7ADDEa4=yS7iCvJ464rcFSECtl;cVxUQ@FL`~!R*!9&>~DOd6#pd zfX$QYDG$J&yt9cGMYu&ubf~Q6VK%*$JM&ze6{-7g-jb+7Vi6-twY($+9Sic{dIe^{ zS&@t+xjVh77&tSv6SX2QYHI2IvXg@^tuWJD>Sj{Wq|nv^e)H{aZd&~%&~U4bA3H+a zEkw^bt+qXVZxJjAni;us!%2A^6=+;g91F3Lgb2RRX+;>^1^!pRCbwH!lKsZV>vu9$ z)d4T9BkX2S2V5Z2ZZf&>F|oyN0jGsTgBD5aF`m{)FCpZ?K9mtoF-LSdn0}n^Cx-YG6Pmb6F7WXAVk(P7SjXH>P}_`k zIm`W6wiHAeqZO591g-buIcs#K(sF7ifds(u`tgBFv%yjYcnc+CIb?N;Bff)$mk_NS z7zWdx{0_07q@#gt`yp;dpl+@QJ22@4e5>(0vEPoxxixQb!mgK6!Es2aWV(UmpDM4< z`h9CLp$)hf(p#MrONjf$nwh6PDMF|yVR#9SKT=A>0pw7x$gBe_V{yu;raaaQ)}B*O zqc{#Hb{ZG#H%JamF&wCFIz;$o_S-f%;oRx8DXT}6zfm-m67jX>)G=MTZ{4xI{eStqntLez&Sn)Jr%oB?fGf|`Qx(L+tlm#cy|i%Bn1tSem;T7q6A z=+DtXBZ?{QKTN38!qy1>F+RIP>ar$Hk}7UcQ8Wd&pw)Fyhv@L|sDv+)s9ctO?N+3! z^r2zv|E5pwtT>ZL6CXHSPzs?Z22oMj4q!VX_b0wk|Nhg#dn|bz6;+wn?oBx%<4mI> zrRSAmy*EyQvIJ85>+c!4jo5?;GqPK~q^0bV1WjvmCg{;CuPeKGLHnNeBfSd;hdU4J zoMTI|;bi@qa63RnSGG6^m?Bo*QK{y<2W4&G-L6%_{*~21v(1dVZTdG2qVniUgd9f} zHk~Yo_3zd-GDl2R;9XWd9m+lV0fXjESOuNxE^vZ&E<-v42j&lC{J9ysm6q!pU3rC` zt2vfg`;|y|4>FjeW;k|p1xFPFL$?0N6m`9>X760Rrt5ydtx<3&BN~R@^eMQcFm4P6 z-Exu#7#pxlkmCu#W=&W@v%RB9yUIlj$XedykbPdyO-Nn*Dp?U$-UFTf4xxXFr`1X- zc0S^|+D3t(M$q0wg>0OL4e?|x7m_s9#p=VIv4#cwP+OZx-%1V1YW<0}8njiqpWywo zmm&kL)c23sLxOjNPd(h6+_K1rk@}*Xi`Z+MoWKWS(k2)A^IuZjLr5!YzMtk*xWYl$ z)S5GWbr-OihIaPn+ee%~XE4h(0t|1OvxS`D#V*Wc9aD!tu;Z7b^P(5dGGB+~zZ#QS z$LjEwa6R2;JS^&du$>mbYSuz(&V~EX4zO>AUT(H!Rq(_TI~S0l@P{@gdsQsQWl=DX zuE#&+#tY;kmMCDr9x)oe%hvGwVqAA<-ovORg8Aq~>IuA*uKmCzZQ4cTH*)kL*jaiZ zcc_Lwp0$Hr>K-;_aztJFJ70O*;k5{xSe^d7g7U^S=&cn}+@B@W3h`utx7x7AQ8j!0 zJH$$x>lwg?>6hU^Z4)eN>WH!#60^!%-`ofoE7<4sKVi&ZPd%_4*QY15J|1v|3&90Z z>f?wJt_X0!@2NnNjefeR_B2l#XdL%G?PWkSuWQU5Qmo#oDf0P8+zKjRo1v|#3)+DAt7 ztiWxy`%$Nx=JjtbZ-k|%u&NoZhaXe;F)wHY9pv$=2J~x+g*PlcF2#C}cp1JR4nAFc zVHcq!kB>HBzu#aSuZfJy0x)l@*^ANHj|rJQ9M9BPE)SLLF@}OGAg;+DcE+g?SW{z{ z@U1iX%pVxD_MVf=N`FK*{!*=%=5dIq0c`8%3U52F>Pr*e0BdyRevj5WrRAo!AEbht zZj0&q7;lB0YGkwvKVT^}w%z!Ri@pmhl*usSsFBUKECc4QGRyvCxufZ~GiVzJq^lmH zNY$ryUoP=p?>hl`XJ0|h@45Gl^*lp$5SY2;we9)U#&FjSNPGi1`t1LT*!15SqOfk` z`BUnoIJn!o(f+VMA-Z=;8+b4fq^C9jL+zviedp#4KOx2CRWf=rL^bB%GIWtT1h^uv zp}xu*g;353uazy?ahH@?$282M@3|0d4DvU%*9Jq4=BB97?jZ?z`eXIT;;MV?>eT)* zJ>l~t*#m$u&e|C&rPa~$fu$)i5Pm%hUkO)?j?Z!OSX{UVDSEm+IJ))U{z&b+l~Ixe z^HK~Wx7W+&oTH|vMdMHjgV0tC(j1DgR-8g`{;5#b2T_C$Q5a2tyO5__>k`?o@L~j& zvM-iftha~#xKzXNg>eopN1Vf!s--7fDpo*%O*l(K|83TG>e!GX)H)e|J_a zS7QI=wvyRD#Z{>sE(NcBFcnil;THCGkqC8)CzI^TSo*py(b^oP-=H(qe#d_owR@!C z#)H>4;WGjQ{fNuXJB9Pp>UT3*p^h-e??QLY;JWxAU3g-`kXrexKIAqGq8G-k6Gp>h z{>r2nJ(88?v5!?c1VUQz@bQ)3RcFZPk0|SDDzQ&FcG_GEW6aOiv;jK``%kkS{nux% zJLzK-X)yTNh2Q!}W>eX9nhgtJ6YokG`pxa*%zUuzGULcyM8;uD-UX$$6PkiYj5aN6 zyFFs-n&d?7MZZwz(H(;6-?A8Zt9W8~UJ@|8@pg#hkYW>1zfjK)u~nttk~I~kaum+mBmY|y{k#$2RxO%y=j%o$}g(2+DYy^)cCl!plN$F zli*@@?upZ<_1ns6__CCjqkE)|UKKX?p0q@+nVxZJa0Po#Ks-i%?Y=HCUx-v`XjHH7 zDl}#dBx}C}ThhGI_E3auIGjFNH>6jytZu6pVeZJjU}rY}hMSh_`tSoEu~({KJ|lax z$7suVLAXQPe^(CfTVa&x4&%C`3+}BrjkQJDSg~v9jJA29zly!C)AAw+xcfPH6e2Mm zqsHtL32{jAT-oVYa)_3B^m2bkPCqeoL*@?HApF)@(V=eL0{pQ|g3D~pkB|Vn?Hc`* zc!XJ4bP93|_MRjPF<$g!}a?xLhD?J1i%aKd$8 z)`PNc0yT2hT3a z5ED=gkQL?2M1w1>HWM)%!fjMy)mInEM~U~&aog3p&P-<2=dFW>7rhN}%Y z9E-tI#b7JC))Sw$ix;neNF0DYicPXTOb$oVuF9rLxbD6SmMi1!cURhAcMEot z)-WQnO4>ap()zul3srcvFOkRHwI=cnvlB4<@&5KZa*G*1@s@`FLt|LDsPJi^^4-?x zU1b;_D`xaLD^lE;m;AsUOK#LnaTv&)oqQV^X==<%ao`T2Ln%r#op75UnPSvQdw_;j zGwvoce8IdOds`gYV)U;O5cqeUUplS%O`h%>*fqb+P%yV}W60pxOe&QMKGNX`88ZPH zD$X1n&g^V0FRCb$(~MvB#U{3{C(O2%8`OTxI~vYe=h5YLv7T*t;s$x(KRoM81SlD~ zAX;h#Fc+QjQ%^6iJ+kq@`hl)^!%-XKgEpj+R91# zFycRl`dYV3utCI?4>jVYMK-(LC`INwFC-*{w>86AhoNwN{s95SMMapH^?w-HCiD=L zlI7&z=}K4>5sG+x9q{n_Z8)E3Gy^kPJu0k2*{~YdT#8;0K@386SSy;oUU9bE&4$n6 zCP0rIKIBZ7))vuu4J86R1Ge*S*FZEbLk^6f?_p;QRAB%Q1Tp8e&% z)%KbR(@|5$DA%l%Yxhoou8at#<{AU!*Je5aN7wJU_QyQ^G6}rok`Td z7q)fUXHYY}^2EVgJsAvn9u14Rg+lpA%0IS85z|9OqBIetwd1W zdWQIvTsMk)q1;u#*t%ixI`1`=eaFe+xgntVjQEQ4&L%9%L=F`{cm-M6YihbbSy^U& zgn0JvzqV&dkJjCHq;S`Ul-|e*I6IlNXY+^;#*Yb-7_rB9wa7U}N2cMH+N(zxdK8Rj zuV2;QVs)i}@gRWUiZ=y(5?6ZAoNzG##xpa4s zV{xei&yyZ6EaSZ`Sl4$Ah7zFIntR!1lDbQ^0g3{O8pPCOvh$&!s15KdIP}aVrCmjB zI(eN;!m*0_iG;SeDHTHFIOb^5cHXL-24-;MD;L5(pG>l@`)<=2xuzZf@djV#64gCY zWo}j4hbA_fYV4MdisrRTo7)z((DpUQX!-YcY=BrR@>1!>rL`+nb*(<>`PP-6pWoWg zriM0;kBLd%%7WJ@il((LF$Ns9Kl-^%dAt^fwHeXohwb(yEfDU~1*icY3m_?Ji+)D& zV5@u!mKLDVXJJq9Dm37#nGWIR*7BDTA`lm7Hp6r0q-AOeiw_cv6Ih24i8QikW{myg zRD2e@gR%J6F^|hMiLv*`Q#m_&ML1cSQ$658*EI?SN@tH!N-)@y))i%SO6+KCmv$wz z-17tD#$e;|!dQrM4`tjXnSt5{m6lH+m?oM4(u zaN|Y%QS(NTYmBc^5{p|xXVcqfb76)-BM#EPA{;t@E=r-dQUaed+9KRWw0zR?UIXPEgVZRf;W%g8btbe3_=o*;f?^{?i z*(C#Lm0`xKu*dh@;@=0Dspb8sp(y^Bj7RNjWlG3p?_7y=Sy&g6PkEHtf z+Q=QPTI|y9e#twgSLof5SBYG>KRHUO3ivlcT_n#C8y;i zAa!~VIbCpwcDWiiLqX)SQx%7D!J$0Jyr;1~%RPdmMlspyM8h4dW~yusiO)aG`mJR3B25oIZ>Gjo3+1 zwv;L&yQL6DJmZ{`o>HmX+{2J(3Hrm z+H|uq&hDsGYrH~nSDoRoMyZyHlg;(>ag}+rDw@I0-sG{$$7!FoSbdl?2B=uWf|*uK z>wn|PA6}>~NrECm7{mR2QOK_d-eoX{)HV<^-zQq}FuTwUgBhExaOsv^AP>wh4dUzT zAF3^I$o~wASVJbX*QZX5-`5qzK_KN?Kqjbv_Pr%Ax>3Mmjm4>It)XrsjpS)EIYTb6 z>lH)s(*joWgym`X&tSI#3+Oyn5aHz(d}$ayU?Y6~NDOk+*^z5LU*f`;;^ziM!`+~` z56ypg>+l7tt0NCDA>=Vfm2xxAD4UuC9dkcrNlarz;t`+lX_?4ouq3?$kDyze0r>Wg z_n{Tq8eI@g#l74K-Rt8!Bt7wS`B(y4T1L24;Lbxn=O#Z>C7tJj3FPJYlRQok?6E&O z;<{m)_nmm7SZ=7N2j4hha(1m=19?LDqo&c0IOQlgb(Ic4m_7U;*FGOT}j~kNu-y7)O z8-*G}1xnYV4;_UT28=Fe06?7@iYbR?QeWE4q0gkmH-r7Z`H568Fs3LlCUJ~GTp;3t5@JIwVR0K_aS`D#phVlO=%a4&#{@bW zDQ%=VP3V}r7IW$l7!v^6!0Y?>o@1p9%m1%`B_0^l%etP*b=X|v;1cBllhoNrnMzJ> zp-;TUGnJO?mI+HX(PYDF#K{dLdu|8`OTzC;s$ z{0r*%KNtG-1?}vNZT^qz zdX%cA8>%Xn4@Jw`A9yG$BEMh*LOQ67iFu(PPCNwQFz<4McsK z))kLBO*(Z;I#zW}OZnd-9i9zf8y;27%gx(Os}uLn10w>jyytII(k2`kQAZ=$EGLsM z+t+`6cGA3G1rYcm6&v^A1eW&#__b8Snx113Rwldx5IDx)^|AQ(2V|Iim4ai+o?8j9 z`H3Rr#&4+9eKdkIKD2zqZul=oPV6FR1qgaEZifEp4rHi!4xbz`daLl+4Br5G#_qlv zxU6>!`Ljt?avi^?MyB7rH?Z|%GvJ{9xwy1-CFbp>>YuBTpVZxS4m)vsf&{Xo$F3jG z__E{EOlXEam4mIRj#Am=@2P{r)Ut0k-e>~yx3%HosGtVzMNel~hBHe@V11*%`71*b zJgD)nnkGf4x2u2MM;pNc`!>stWcd=f;@J(M-{+jDjYX2oKnAjO z04!PPsa;_O!63#N{?MiaKSwpfjNBT`&kN#2hKYY$UlbC=zB}V z;IsCRIe9()awA;EfV171pKEhB8O_2JAG1dF-iqk;S@-a_fub%uxetf#ycUuV&nqYng4q?o*g5 zHK4*s{6kwq@5TFmNBSY}#_FEP<{f%c4dg>0TF2#m9EW_pEMXtdKtKFdj1N65w z7#(9RRoprFHO~Dq+V253^%LGW(Z6IE^^92ltUp4o?*k?GDuV;&BP%`r#-DVup<%RSCOe zdiOMDvC96Az9TwM4wgAX0ySQsqbYYO)EEqm7j(Nb zhPc$6ItE}KQqflPFNecPr|X|dkFx~`@#QI~1r~+Ba`6B!aBc9=+t38#gyB)tH0l+N6m@`DZU5OD-ns?bw5^q%>s<8efp2$Nm1sC=l|J?X}$c z#WW=jFxp=?5O>{ZR9kMRE*IS?ggr3iHmB^i1H^DmN3V~*!rw5LA*^^*dC=Wls{8Qo z{0ZRIg1U^PpyKF<_&Wo9JJ02(4z&idT-T-dswUz%T5-}RE+rV5D4>Oy<1mnifJLj& zgHS%~twdOMVa*O8&IxLjyO=-mI?ZqasS-Qti-DXecdFAl+&fy6t+)hHbHa(}dF5|K_>)F>B7&xf$5+;z$slkbVOXkpk{ zQ)Kt|nIRt;?CTX{z!_*Tm?3)`Hoc>bJhN?e^h9)x3U$X}CNx$`!IjpSObQaOX;w;8 zsOS>;eg!SjH;mM6x?4ozju;zBCw%u@(YA!5<>gA9ai<*GMZ^7?T{fDV8xuF0@7!p% zUana{h(?Czn&qr?MF7j5%{*YQ(AL}|95wUpE43gs3Ffvpi#z5UT*<=%qrZKR>&|{( z0N^gKg%eBRQfK0~B^S{Kk%N;Iw{IH*ui<7El$%fVd`6I_Z%1t*&U9h>d+wRlublmT z2DN{qW8@b8`8=allDZ=W@Qwx0ii_XHX1ol`H?T4%KdCeCvZ`F!@&^G%?APpr!#iRO z$S!=8r#Ukm!U>L~{z=czlPw!|FxJs=!Qq?dAl6?=5h^EeKnvl^k?Yr;l}!v1{gClc zv2}P;2vXD5L1a22#%>~=iG}{YVcUZX!wr+r4d_Tz258mHF)T|tlQlw@Br1#5YvDW8 z$eCH%J+n6H;f;UF{!r?O0o&3x&kI(WR9;VwzM=%j`#ivpRnlv*3* z-Lw_N~G7$^QvaSC7e_bJ( zrJ`w&o)htPR6DGmJs|pFZ0NQvOXf^fU*7&u`}SC`LVW(myj2`6TDI7?`}GLQ|DDf? z|F?V&?SIVYtlj>vbnd?|`5%2KEWVcr8aO&R=o>nTxZCJkn;Xgq8SC5p7bL2p>AI+d z`U&qihNwt6APPZ?hp5lZ!s!2d-Jy;yx1dNlT%xQrEp367EFn^|xN%!Ssq>-NrD`f#jO=ubbx!6c+*a@VD z+)i}Z(oK69N1h`$u>Q9yXmZ3}B&G$_p+ZQ|ll2O|1GP%Ym8;5)l?6}Bgb=gifTfs+Ui8|&{UFi^|L|VG zzna3qFu6GF-Ngiam{yafl&y((0w%Z!FO7yZDsWS+0r!curA;gwq&hV0K5Or9Btr$# z1hYgM5s|Rm)Ui(w9IK9f2kv+4X(`t^pLJxSdbPF|)LSM0G$k_c%O~7j>xc!$SjW+M z!ilsM`5gI}Osk-3Y0CYAdI)m@lw+nRXX-Izd2^p0m5KDD%PHbGQj{ziO0vw*cF!B@ z5=I}TK3eF*EtUua(!1NH-6KhEv9-!W-Sy6NwE?-<3{wjjrLS25!$DB0Yn^};&$FO9 zZ@k1x$DzG%{ylkVa0Esjy+kX1&cb5w<{HVqC*!_gk$zXuE}_X{4i@1C==-N0dV83M zc)p`>_5+~N*Wec2Umb;PzYVLd->;S#Wen&6vXQ2xdQXqIT935~{^0E; z(VGH(WO#HU%%jl8=}A9 z9sV>W@}|$I=FI23903jG zELVa+zkGaU?P_)Qx=3ZWvg)dJKo0p!?MqWLV|zw7`QJI$2_K_VXnRG$_tKWr^50>= zlxi?+>tdb)PudR9zX=eAZnz;D#}}b<1oBfKL4TN+W#~wllOpMfnj@bVkqeFT{T|nH zh!(2+-~jSIx?%|G?Aa4rT|sJ}vWJJ(uttvFAvmk7m{SY|uHoQR;dO0(ht{J3b4rbV zRUE{X46aWjo?nO8v->4>Pz$U3b6k-W8csfh%*b1|E^}+g1r6TT+;F@PU4$YC2r)au zw?BJ`hi)J|APUs`^g>$y;6@q)nFQIc6l8`JZ_$dG^w*`LV;DEvpGroYK;VzT7R;0~ zlkg7=@w{6W;32(_tbTfrX~R9Vi25MQH8Ju%F#Ihm_*$@RE%Ckzz_iehp2M&Tyi)fw zzo^Xs%@uhfB`6Bv<%`8W%$oY}?-I%IQ6QJ~2)9=p6i+1e1s}l7dr`==nHn+wINrp{ zeDpeHTdpTFTLSh&|L2@6?iZ;%<@b!N_IEA*|JKz1JqQ#2Z*g1D)Y#^~+Hl^=)<6_h zRG(@@7j^Ww=Xv5%g@9wQdMRswy8@F$k&sgD`h%$FmKJ-4iECO%M7-|dNFW@{C0W8o~nAPx{~u)Hc+uMMPmxXf0@yWvwV65!lD}98TKu zw*_JsU3Q)deR9xOEKW;&5&CXp3CVpcZR%*?mz$+nqWF*#2~p<3iRvfaIph-D!G$Ce z?Z;NdC$xLuumJ$J&v+c?D-AIwkp#_aivhTD;#!&DY^;r@fQ&?j1n>S??FVXqqCE($ zcvrd1-}+3ZPY-D)*TNj29eXeFxYq&`uZvbZ`%Jb{9{mz4&ep z%VQaW7VUpf1y|7Y*MIy9JOoARWv2&rz{M+1!bGtyu|HVlG2D) zmTk_9=H{aIqytmS*NK^@RR*zlN`V`)&FAj9<82}Ho(dSU=gLdf5s9QaG8ziJzBwVf zv$r@tsy89g6_`u*NGX`p$W21hRfuHth)qJIEO=N(&b$Nnn9Dx?#n^IP3C^TWr^eHLajXHE|3y7-}C?B>Hqr+{=a8g|8-vW z|If0D)S$d@j*`B5B$gvbgyGXb69Yo^kky-ukO@hpa+?xb?d!5w;Xx^WVQCtA`qOe1 z#GwE^7Ut)L%>DeS5*<)6(zm#Yk`p`}AEZ{VY@W`)?``p??JJj>E1Qj{smQ}RHi!AE znJ|;%w{6cI&o5W6>$mR5gPKgyf9M|C{cH9uk-O>laG<-xV4x9nm2NP%6K^J(+)#Jo zZ)l(`Zi}CvmBA49S3qZ4hE8e#&v0OXn~eQ~7Si`-Hy`og>(GfxLfbr+ZO+qYoqtBK;PKg z7-;t0oIw6B+C5!V);$OzKi{MqTV@~1gB|1d5P!x`;IJ>1#BPuAyTtGpB-R&A;b+eC zOI>6RB`9&SaKxb8ul!sQHfWoISpO_iNz#?PC<|jn(sDy`MdNm%yrD*s{37SZ$o@*) zC4f_rzij6iNq?fO2K@r`ZKqUm1z9-dX6m;o}|II8MwOawFA*kWaFjE0faXd>!smuNAL(fVldLR6Dkeg-B_ zyL!G1^A_=f30Mf&0eYGuv$e7r&V|^N!gj{^K3V;=#la*Sk!RIi0%s|j zJfx|Ty%ga>on~#R*is!qUEGDRB}qQTripgpltzu4CD^*#sE?U>jK^7Um{iKcQ*7d- zqe;I@I&Q8$U<}`65}r9I9e=`NKjg`;0F*|YG^{GD*}a?0FglS|BLu?bcsn7%g~ z*@Q@SxP?bZ_BBTo5|bF@gC#oAd>RWx!g}bkKp_Rox5+0w8INN?K)bx!vY6O|l?De? z1@)N5mL$3KUzh>x)WSX@^IA!4csK%U%D78A=>|3u+WS=7f__B{&*A#zSR1U5z$RtV zE2gMSb2Y<2H25II1;RmAPD3AVF$2g&c>-x>}BgfO9L3pB{vG9R=yMyRVtpC zzZdLg?qPrHG+&{`$S<43|C#(f47z|!vIE4#8cR#g-sWKMe^(u*jaSg+QMM2FKByH*DCkZ8KiqkWiZviJTV_TDQ1Qz_iuUDJ0MULfpBu?*t`a?V|8i>rc9 zb+mXwVWf@;FrU>B=5qQIKF<7DIt;$lDfUX`7J6$yz%2`{y|TY(Kfx`t*2$+y@%xNY zqsa42n|g}^RKSmdOU!FLP7MgWMdcT6y<$F(4KKNc)xYQ_A|YrhDbVOiim`ZS;GV$3 zn|*C+#K#*=Q{YL=FVaYqE5#g1pw1q+r`8#`pngPBjb!f;La~$J!FH4F^;y!ZjwtRybq)8NjfY8jf)bf}sHa9*FV`rMV$e zCR@fC;Ygjvd7Ph#s3V-PIQ?FKDMNCnxZnB%V<(KWUiUG z6sd)o@2nnL2ihuX3!Y+bQ~05cjO3)M=+44bx=+-ZyRYV%Tv6P@Dg53fDJ(-m=pG|} zQ}j~y=>6AM9H$TlPFcAoUDNb~gl!}epkN0fsb*Gy+)EX=qx$#SM`)ZQ>}rwG0$SF> zK?wdxKQ-kXyyTf6Sqi5U@6ZIkaCLbo9O$1g?)>?IN4b#xnnm$PIwYQcF(jK^LL1Kq z6jKUF$Xe;gKVF#-k_`bTRpeg&*TM} z6VP}ndND!HYpkNGjxzj3G7AWS#o!Rn$o0u|l{3!r*}%(F)Ej+vETu;3Q+@ur53p5a zCT58%D{O)d`~}=!l!o+}DH~Y;CL71RC%(s;5yv2_!=jI&dQfYLa#qopaN(L3D()G97%e(i z3rgaS{3^Q6wfY}BM;<9YB~wn>lCn!?>?Y_^QZV>oTEuB)8yxH>!*G(gWoXJ%hsma6 z#u?{DoT_(e<|YEupQAh4o#_L^-~(&^{7F(X2rO&f`VBL(sFWR@uNa;${cT$@+ClRt zWp(>tM#YSO=tOXwMY)jEM6KTjBK|ajy!ezUq=cT~Gvk!J(W`UIPAFZ%qY6q5r{^RA zOKoEENCcI|xpCyc;xnQsB>!g-{OBhclxqn5lTH;UP#a7NIhrK-UTi7TR)FYoGY6#A zZV~;w1dOjkO*vK#^nGR@+_d=`SEIa7%8tCX&|a$OAKE7tM?TgW!@xGv5ie>x-23QG zEL*9UPp@jFKtl>cLXS2N3wnuC2hCO9*eOObtgtTVIy#0trIE9+wP()qwoOtUf`-Bd zimlZRiU#&LFEEqE@sr!u1!k))l=~JM`xD8QFbaU%u3AQLZXCmEHl-#t>_YN zPO`;m=5(~8S_#vU#@R(`i-fzGa#%nb@SWGEHfi-X`m4*>?RR?t_VRz-a6bH=^uTJZ=o+_H?GVd}GT)=yVd!_BhZBz#!h@ zrpK{eKWTHa$LR%4}AyUSe#bi$mik*%!{C>u34W z@trbTs*s=Rp=s}=$S_xY=up83jrDHLH5x2Z0!|lj4?a5H!cKPD^P1qssIisiPVTd9 ziE^_pVMiVwBx6cJi%r_LqRPSIm$nf#?H+tv+c*n1XiTEO%HwzQz&RGU??3Tu(NxMf zNtbH}uydL0TC%@2>83ojok^(_h@ytR41Dbe)80O@T=}tJbbepH-&P}ODPPj?6#Pq6xI>FjqgW6@I@(Xdisko7<1%>O|o+^3xN2W_8BSLlbVq z>HVFJb4Et(u^ZPDyS7I=^WkYevnGX0hrFlDpQbib<;{Y|{{y6Pqy#P;bcQ$GA2Wx~ z>V`3qY;ov7s8mRkE@+6ey-+24c%F zS78b$+geS#p)QoEEcU@(O59$1x%e>D5kOgx96!B0O2oXx?uvCjZXH3@1x})WC5vC+ z21Av_4>ktT?vpj~_HQCR0FnGeauK3-vo#2YJ3(G3d^9k@J+NpW7!aVJ86z^>&J555 zejXa*lW^f5f>}+$iLVfIQ@5%6-3T5u@Jv2@B>jAMW|B<|>EIoBuppa1(gp@Hv)K`W zuEcW~-E^JYo(GK9@X5=dR{I$P8RLUVw_ac)uTre$Fu$7%oEeeqCRok=N7AKr8)$92 z40eq-dZ%jI6_zYd)_UnYu=;6sQMArD*hB*#sYq&xGRgHTdJ99XOltXF%c4=boW3Eg zFOFh{K78B~ZnLfK(K?;bZ898%ywMV@4bv)Zp?E;k`^WIrN8pgIKgrjJ*_2cMf^El}SK2|4<&}=s*Qa zq3uiwNzc*?4sJJ@UD#lZ@*;EI!|Ea`=P)TNuItGd+Cc(q&J?!!^)7*@oXdpeD-(Sz6_b*?sNpdq=wVSNU%iES(8 z1f^MGj?#9rMV3Jagr+-=NoMo`<@eS_aP%ae$0{^-zuE9y-wDXD$ni-!+bbgHYoz-v z8+`-}jZb5Q&v1K21>U9vN7x_Myv(egV#$`=@ zchC5>PSzYj@bqZif*q5_I`Ms@>iPQKnr$T@)YmtwREdC-*+<#onz*mJqfx zzvv}}%TU(pTWV<5Mh3|i))nP+o0D;u2I|0_Lhjf!8j!mh;>tq0gY)dlZB8o9RnUo> zh&^N2+ClF*f~(-KS3A&N5zAjVY(X-eepJ$8!!rN66rzS$GAr{Vi}?OCZ~E_tQU6gg z>z|Fl|HJ?Ok6=|7aS83q+kVoJUNZvVH=hbM%Nij>cs{^ltgm2#FPJ}o9C1g2pIw0KCLQ<&3}l0qq>1wHLU z-zQRsLM}`4i5?hH@W=KhEjf9it`d%2n$JHuY~+qU3wKb1dLfKHi|~{sbOfBPO}#<#%>^( z>1xV?{ZIBX)_N{-sOj7`uL(VN^m8??q;>@Y{PORFTG?!?8^-))?y~)8z@si^;#JiLH(`?XCQdM zJzk5-7L^#6Q@}dGRH3ygRiRGt(#a4OJv4nW**_hz0LbaTAfSAMIR3g&X__=xZeuO| z9pDon2t0#kK+{0lce;)yet$G%6(!X|iw;g8`Qdv#5%b$AP!6V-o=OK1;E@pJ$@e2t zA<`GsjnX_Fb?`ZL4==mi=teTn8}R-1kN|WAG9?^$W&hq0L z8FYRrN)P)h|3nOTDDe5u#%Y4~GGS`(8ImNU<++>az31-3AdlwGblwVD42z!%HmDW$P za$kCL=y^t}hx~e&3qGq#9>q$|tOE8xdsAGsqmCx?7Co?2oi^>({9`BMXzyyyUtRR& zd2nCbIo^Fi>>P@uZ04}f9q9$k-0z#-r(!k23qGr0o|#=`=+l*VXyi6j{AA9VzriB= zNr}ak0UW-+o!@Oh*befXe@mV3$jEbO^0(1gcWd@(gb;r+^hFTcg_O$P>&9w{$BBvV zu}7Ma{L8R=XXbvFW~ikRr{oqnFqvZP4G7h=S~8N}JykTiP+dM*HH3dUi@qVt0<}LT z4K=C;Odz@|F`xxfSQ|*sU&@}pmhvcp?u6$`WikEa*h2@J^bhzs5SdAuS$`2*IV|t5 znF3_>Wp{lUgyhdW!$lWsMeAt&!__LdyZC&u^w zJQbwtmx=acL=iz@uu|#*fj49{MyWy4L#&H+D6UJP*yB@brmVIQD|-fFQOn;!2Dcg? z(qX6I~)Nf740n8yvf+KA_}`5qg|cJ&i=@lla8uT^;zl!*q0F{U9H ze;S-1ENrWSkYPT7gV89T!Pgs%nhEVW#lRsSOH{uIuEwMWD@;vCuBU-NH=T`jr!t&O z*BzdLi3kY88Vl)JtnX`%V@wFPzYiZDT1QgQycdL8ag(^a1SfbMYd6t3LJBS$k6u(R z62B^kQ7fF;xAPZKoRM=sQL$I66;+&}Csh|+1YT&p$%g

    7_}tzDZ6TOk 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�a+6Hb10AqQg8E za#3W0HV)Q)Z9cEon8iU+0mD*4mM6!6DpOoAX@4JTf=;~z#_x7SH=l-fa;SEw>ov!8 zXHh~+;xMMejiR}{XBsgbm7XB=jk*t4c{6F%Ml9=v3wC#n+fJe&K@-+v;|DCwQe@qZ zBh13hBHXYz%9CQS)Z?G;7*8fx2EJN=IIWLpmS`pN47uBW0$Rvh{eS+kRrr`XD3xTn zh?5=6DBzQ#8BZE}C`)|U^6Jk?$cN%EF5&a$Bnw zK2NAL!&EOyZ^zWab3hfEuwS**w|hvKD5^y~0aLZn*hWTp8Qfw|HD#YX>vftZr5-B`TdN%!v`)jxcOdH(#)qwv(g| zd8x;H;tF_tJU12#eFLbu%0@pn zxC9%i2@}*zO}4rBJ>-Q46*ko!67RU9Ez3=v)6mBq(a+fenp4Up$tA4%c(0?B93(>T z$ySr@=iu*QNvxbX*mh1ziY zg+aJ(Odk-BU-kK7`_=CA(Vl7!m~cNC3JxVo`3=HtzbhDNDkDrecy^+){F7;A-Cuf`;Ff}%K*`MX zjcQQgWW*Vl-TzJy`NWEwli6i$f~Q)6$!a7y0^^*eM$Gvx@G=c%0sFPWEZxka0$|AA zZaYr_Pj$9bA1)%Hu9=xo=p)yku|e@6CtUiD9iY96LNhxG43A6^x0|3v&v}0Zibe8R zr19230?2L0;1Z~|>mVw(CGZ%TO0HnXf<2T$%M|S&+AGi^AHZ6CvDp@+891MHV8Gvy z7U<_8tV79mY=j{kX})l#c1*oaIPM@LNILc=B}mAMSUT)??%6){i1W23FF=^R(t7jD zzv^{7BNsgbait}Ri-1T)k{;|IpHW^$(h^UyHy%GBEm^KJ$I`p9YnAa%k?aAN==L1pZ(Qfd=sGhv1eXFjon9!E1mnQFiOv4=(xup8)H8 zprU?|Ij>2GgHYrVsjRzSpc|^8DmrBnAAHryClw#gYhLwZlRsFqy}WP zh+jf$$x8XB^e-aP-Br>YxSjbrfXJ;zy3~}&mrb^f{{4Q{@2dV@_w;e!0{_n{2RE}3g$M9CnVQ0qa%8n};Kf-n zhci;D(vMOD32yT^=vy0py0AIrVo;w!mjg&b`s(W?N5?fmt;0w` zNHnp`WN${08-$ziuBaF_7nv!Jx1R8o>@!*ZMY*JY6v5BAjR^gb?21xfB=-;{D?YoU zgn$SrI)%(XXe7G`ML1`9e6IcPB+t?V^%1}d5X*DRCH^&iq8aesF)yObfcZ3qsko^v zyjYw}l$Ngy@`LCoGhxcDllogSox6<8dk!w#2ni)&d@$jA0tP}=-{V-2ss;{;Fq-d$xPNEJvyf-j+|jI?#75^zAqSx}4o?Q?=kyI%r6-N@ z`H~>eYUO6hkFx3rtzxU2!?0dvzgTU38OyWWtMRCPg8mC`n*?UIa(yE~t$$QP{f~Q3 z#ns5!^?Oyszw`SXoZ0?QLqN{~`FjwcUqZvk4vD&XNxPz%zPQ1v5kfZl z*6PBm32XXOvSdzdF zvneHaZWn*9Bgam@f|YjYm(fPHP3{9UOdsr$;B1jJiz>!*rlb>blMJ4L<)he1>%9;4 zWYdDChp0$Kz6QgD8e5m`3ZSpUyNF8hdH6K_?dr1ZEs(gVV*Mbx#^E&2fIQM=cV>)|UK;bg#)NIqn&9 z^UOAuXyPvHhXbb83n~;Vpiqkqnar5~U{-_;{ z))f9)Z2Xo=VnQ_(6G-}G5P3x;X`~bJ_0OTIlUXP@l`{_>x@;1k{<>m_1W~Rv0g0^- zp>WFG(~W!~UZr)@>VNd?d<1+A5&UbDjl9p$!hLVB$bXbtej5net#AJ>&x+h;v9Xccy(zp#V% z-jP%40OtGVL6;8<4-yYLJug5;2(_K(71I=%TTaC|I-cv49UQ?U? zU!R`{pz%W`5s3h@ly&O2o9wvmSmiP3)0haX1L8EbS?a1cMv4?KBS#I|=it5W2+TWU zEydd(k<=+SL7FK#w~80B#GbSZt;C)M1sDn>p6I#x!@v-PVL8+ony7TmAGBz!NMm}T9I-7}vj%^KvZ1n7^)J)~U?6E?>ldH~ROd%&VB<3Snu$VI zDYb3`E+lxkDS)lig!bmGYIYvNJR2PdhYWK$XtNEKvRyy_j&sIT-BwiSB$v#l8>})y zUjZ-!V;X+t2n1S#V1J4!D@Q=B(f7*F0=Rfli>RF^C^kQ zz{PXOan{})yIvwr)r9U-GQaF~iFzQ~%ey9o>kA~Dq&B!K`H(R{LzEVQLm~~Q&;|mw zi4{scb5XYISks(-dn*_tRF8N3Udo#ySFW0*Di)jD{Lr0Ov)|&>qerL5Zj%aJ_oKd8^+Q8>#00qn*O<#a34Tg&c#@q1BEy$SufchBBRDwXsEg{Oq}~y_$Iyw`bORk&ibI1 zR(%5=vm~OLe%l4GsRcx~dF0*J|G1`rD3H$id=EUSe=}YGKj6^6zlfqnu4ezCx#W!O zjlNw}{`cvdvhIK*hC0;KjOWm~T4I%1WM?UZBD~M(4*MW%^)rARt_UEtR-{3BI<(3u zkGI~iT&7D(O$sX6353jh11ZUyM{KDbAxKCR2Z-<>1>L(A^l9wSs?B!F?3|dG%5mx5 z&SGKd5cu>s#sQ5N)ED8A7pnu?FGxq6EV7ihv7NF^>uU;a^i#vLxJ6MHo+=#4J^4 zS%fiRS`)Y0nl>?c?crHzTpHCG&m^<3ft_5fIl`gQIESRyWo?A4KROl>;J?}@_;@$R zuoxfKm1)-{oC_*v&($Oj+~y%O)Kt?;0#h*MmA!4Ww_by!l?H8i-+9q+s-TKIY( z-N*aBR$Y|r%Z_u(s8s)LF=XaoMPgoWTB3Er)lI+LbCoCJh7ol*o)WL1;44=V1)OWWz9Imh(7C?;&C($Eku6;eh`@9)4xLArT$s~QlwSa%og-IKPjV^+0* z@f1#SRx|RnhrB1Ysdx0C>~WS&$59<8;zXN0YGfNm=YGTB=BIE=d;I=vJ<}*3>GtNy z(QzT3AS93yP7H7XulqFgDqrM)9}TLKaLe<(Rp>qRdv?8!qVbp-h|S>n8LqMqI|N}`r#hlE%#3(mJ10IPGhAX za*Yp|taEMiwx=6--k3E0vaNxxK5z2M$*waod$+Qu-@a!LHYlkGZZ*BW zTFh(jz>!Dy1O_Z1+y(a-in(KUH&3Zr|ghhbNv-3mC_^z6R~N#TyG(2GMk z665a*X4HSW^j{28*E_MlC5rz6ZuiF=2(t>pCuD0G>ZJnJvDPCus{L3i@jLLQXn8i6 zBkh61H!5SetWE6t=(24)I^7j36B4~5FywNy)kjbce+K9}up9__^w(C&HV^2}R-iZ+ zE7yG`V6ZE=hXBx%JiH2=SR|S{@hXJVPo#SOZki=&(=QdthDB9`=Wte?FsA`G{xjnc zFm)9)sYVNd;%PVn`IUaCd6zJ{iCk=sB_s}Y(w3-^Kg>-()24m%iS^4Mdx(cO75nYW z&aaHF)rQ3CZU;Opy$E!W$7g!P#ytb&e6Vnko2m5{fb4I>hv5yFYdy-I(0W!3-r?P9 zOE=D`Bja6mL0{~HVPKq}g7sKd`?Sw7o_za5!V~zQZWRh{OvnOb+Ju(t2bSK*z9vcy z00RbX1KVZqJgF}d{bcTJn#ReM5+AMY zheqv%r!8jBkMeJK^KEj?adb)i%Pd?H4?7WNrlgK^=JxV_LFWm{^Kb;l- zZSd!Rq2Pa&XjZmnibl>ZX3nHc{~H7=jZ60neh+Lf4VBDV`}TAoHa*5epNXHA5JCzK zN9I3<9N|y#9UpC7=T0-2)(1s|BTb;i^>>DY z(PC>d*V!6|5aqgldUj1Iy7i4TzT$aw^uY@|^jJV}K)7eT1Y8Dhg%kXS!5<{%Hl}RC zH=RQZzfSm5&+u8)Ti3@&Oa`KeX#A82H){ZiUoCYlAPX)}b(J&K? zd{L#hzlB@pG-oUx!!0nU%{rkcX2_f`;J^HP^oZ*?G1}?7;LiWYg8RQUMgH$s^FM2u ztpR7Kv#j=2L#K6jf1hjI5spV8ommvKw<48Tl6?tqv!zh7UM;^Y0+19<&ox%7r$mt+ zmqq~&E(%i)q>43j4wJMf|%5wb=pUCY$h!`d1ITBVD)Yj>CmYcObyOQ2wI*@rSq-0r?yB7jEZo z#p`Dwp+4l^uuw>zvXGh(q#BkYKM2SRE>Y69q8c@!vSN{SJZ!wRD6?1vTDg4D&v+0k96 zkeQLqC96svvto-5in~?QpDh~s?u?03ht;lM!O7Z9XiIRi@-Y$!__?@G6-#h%RXLVv zyv+Q(b=ZD!Ht@003e_!KL#HPzWgZPo?7U1&j-F_SCo7(=w!GYJ(jD%umNPt0*<)np zsO;Q0qw5y;n<%5NAxV6uhnFJh7oEw+DS@R&ET^XYiE1a8nAj6MXLMM^&ZvljW*I(y(N7^y+|H>$9*b&PTw6G-Fl_wi2}h z**x@QOy;Pp2WwYdn#G8nO^!q5TLSCyG^cBlI<9od#TFg~V6ay<(5j3;s^oHZ@YRZk z$4ai$Hr$llzF1y!wJ2&+%D|64U1ddSYkJU!xwwn;g^4D!(JZVxy~uK@n!VZ(HaB`5 z=9TmmQ85#B$s@_lz^7`=N~^brungLpTVFp5j8suNVXXG(=m2*X1$pR#xL}Y{au=(IuGdJ`=2}}8n+%WNx>nmWnX?Q?YMNSR9oEN0 z8?lH@a7}Uar6!5RA-vxpYqljrwE%#V#l+%rz`EkitqAK__fCILPMzhEZAebb;ZGq<(`$6Otz@p2ZIHda4@7v&3cFX!i3NJtJ?e!b9m6b)184 zbCy+?!TKbKUNW*rPIXdUMFcIW$k+Vd39M4Tg<&fmhgA58zV6iK$GO`I$#}V=s_bXd zzi%-oG8^9=OvMydmMYIIdxy;~?^fYsY_VclwL}zkrxfl*l;gQqE}q;dmu=tMBpu7> z@Cjpfd!8`TCh1n04W`>4S1N!Z9b`U;UQuwEJAelMb9$P@nkceIqE%`tU5#R<95216 zw}0R|NnT&cT0u=R&7X7xncl0jGvtGF*^Qv2aD!n7&;@lBJC$`g-2pNcy;|;(V2vY7 zqUGX#uQ^p7)d5u=wNl!RL6$oAko}{=(|L93bjW!qJ7(TOC>k9<8kupKiNPg4XhO7t z)23`ZS*`CudX(SAzs{J|TGy%=^JTO>H9X-W^@i$`><%v+r&{{MWqq8s&(mVHawl`c6JHDz@q<*ODQE*6q&SA{>jTNmtf*$uk?S^<1gnz>s!vt15T zVl103CJi;iMNi2)?4xmv4vFVBt;Xc1kB(jUDJKi;afi(ZMv~DB8j9KqJ8#vmpU4lq zvR-A564~FQGECoC``L|8#hdgibu8{S2d5@DQj^5_2|ta*GY+h4Buh5Bv(X3DY>ay4 z@0aY(F+1milyweWutEKKivt2*Wtl?d@XYWS)(M;nvcpr?1f{nufA$BCnw~JbjK7T zZxWX3jxX0t;tt1E)$YC}*GP-g@Ts9lOo0iQ9`CIdc^_49R`bw^OkjAmPibXwCFYFi z+1e# zu{T6TlxNG7=>}dW=;s{H&oDTIgaaK=HgiVC4;O^i3|eIo?P!gu`Ctrj!THz12n;#Q zmc`Qc5-7zMQa2>VqJa>tL4d#dfK@OBbN_5IF6%Ze!xxaa#uMT93w!lK^V?!`K~DYv zS%Ug$h}BEARvF`lZm4U2hWP==HXq{3nJMXuu^wIE?#u|-57>P(_`{&wVd=^z&=dUr zQl#{V7!T}oZ)#?67%=w9FJ5O(eTNAQmX^Opw!k-K=c3yj9E$(f%Qn{brqzx%&j~7D zY1?nR#zK)~+ykx7-lVMj*HOnC`-_O29axhrUYY01uz|z+&hf>2ecS4@d{e|vpyl5! z8qKTEgx0C`e$-7yP}K?yg>vjYw@^*F!zK6vW@u1$)Q0z73(u-t{dBlzwz_*)Yu_en zk=}{d5}0rl+AO5#k~h$E>k`gjlKbq+4mhWaLV=egUG~JyKc#Af%s<$t6qH<2m?oJM zN?)I??{-qt0j-Qm*L|O!1o|Q{wHD*=;HWp|wD-}bhPXoEg_!}+J{j82EMxq%O8b6O z7yaiq+J4lh!zQAhAlr6@S2*cE1?tyt$oF2u?UjGRw4EfT%#EVnU(9pa>kc&!!p5I1 z57JY-fmr@o=PRTSEu6buApulh=gx`Ts2!7l)7~86K^<<3$WsWt_iH9ezz`n7lGqe(`NSF)Ic}t8dgAK63AkvG1hTqq%ZxF#5JtjMvLw zO^$;QX#vt_stK(Gb4|uH7eC!=&$VnwT@&|LS;{VbfH@3seNp)^4oL)-Fn7gM6oxC& z?H+NO?&P{(Rk~l%kGuE76>UZfml7n1a_Dc%;@2GdBwT}6Ts!<8PMHv+f`1OiChMx6 zmia8JGz5`7H1m-pb#-D?QFiE7-Esp76!Y;Q!MwsHF$H$Uz2)6de9&dBn34`1(cKF zM!AVw8rJlcSAmRl*sp&mkz3JM2W_Yd<`h;jq*pPd;$ABAp6>qKh%a$VdES$S@KxaM z;ZE>M8x`XkO1|b34ovPg$;eIPrNpj(0gLBwthctkdetFA4tPXEc;r%oV^oEFw8qm` zg<&s$%yB`c@sapsfA~(DZwR)#MfDZPnVHFThq_6h zlWUNJ_~Bfbn+CmEADsJ!`UIVHCnyD`y>z3nH|@IgiX&RN`yb*}0kSBc^gEMg3g@4S z>Ho10{cqy+yO@@9u($edc>eF^(tk>@W=)%aN#Qn4WJqjS>w7_ige74~#Zqj8aVY4B zh%g2Ii0`2Cz{AUJ_F~I`G=#>O;wC&~7fBIV&1=kY_|8Gt1q3SYu}-G4+Z^h=gRD(o zBAlF+)?Bf$;KOKzw$nUncTc-KZyj&AT;siO`uE(TXUqn*vK29543eXo)H#s{#)|D& zLKcz+nMDtFqFR{Q3PqF_ah4JVmzwRRQ|e4hpYPAT1vl|iHRdK+(uJ& zhii~{%AGlkZnPG^$b)XH)zP!K*EzUm9J-oYI#aUL2x2KYuK&`b{dSD>nxmY^oZLaM zlYl^Yep*}^0~8Rl>(#kPTokCa;DL28woR7$4o%@X zUd)&5uV0fbyDnw19l;z%c`eaW0y>y}Xtaat=JT66-SUIsAb-OSEfPM17UdOw zn$ZH#+zw#1JMqc&1|-Giri~I4%A+GptUSn-%=j!8wiM^~)n@=Z=+5Nkz-Y2Yp8?OY z@n7{?4p~aDPAHIz{L6+l(Kg@?BSV*!=XW4-RgS$Z_T!5T+bNo4)NJv#WT%|#F{cdH zlZ$YyF4=)x0()SEX)>{?c$I1E-Y_@dFewt`cQIXrVR-@Ro{P*TNt0QZS&4~_eSxQ( ztxaCi>AUv7WiKTlAW&VmNjW~E$~HT)qjl{l?_Rudldw-v{xt|!v^Q#O+DXy9+@k&5<( zd=!Qu>L~)R&tHJ1XjXozNTk8rc##Af*2X~G0O6rKbIVKJihM{8$KIC3NN&IAZA!`N-M%>|Of0+}w4r^&jl{pc;^%utp(hpnER127uBB7QibCX)(cFRBful;GhY^_lfy(B z?D}8>2R8NLB^blIcw?#edkTK^s!T@b^5H9lY_TI6|AVuZqyBInb%fl2DI~l>7O7vyp>I!zq>Sk&kVE+c;QJaw}qCNR=m2ga_rg#7q$MrQ9a{cu=!0| zOROv=gEkAzdRjG4^INJA__IOgmT~;j(x@%+50ogCJ<8!lUfm{YW0>)i$`rr0tLK1c zFo~niC#Rs6l0H&UcjvJsiMp>x@RW%RTC3V@hLoO=4%oS7b#2}!FuO*5FG0^H&i2Ud zLNT|P$cG_8XiN}nFOgqy>>j>829+shMIl?no8{`bcIlUq^*t)y1Dce9(PoAZgwdgL zLj=4tgG;k;Hy}6fnIdmb3Pa;rJG^T+Cb{FkP8Lwn|{SDJ@x=k1j&O=Csu!9^iGSaqXgduOR%>)8UUfq zt8}F6s{itScfmBGO*Qth^8-sQs2E(6nmmms@N1owm!|77Lx98%56qATj2jafJVwj1+n&BF>Wo>Y5a zsr(#pF2q*jJbx8a$%p1TwCD*4w5t+Ev%U6%uybP5>WzWEYWroWdudLBr9lJmSPdfe z{Xx)4X;90qJ0z~#o9)x;G~$9qKtXYo#qlwWRu8Mkvj&G6?hbiwHZBdL1zr(`3`!)MItMT*o{MVOh{ZwJe=rjXn`loNXh2(+O4@dQ|@u49mcrq>Vl8)-#g3o*QI&R;uX)8S+n43O!mHV2=XjyI-?Kh$2fvDt`imx1 z;8`%Z)M|2_GmU(iCwb8M8hv-yw#`Iq)!0H^|FE4clu_hg$CI&J;B$k}*Y^ zBC{x(UXWUin1wEudj)ID8Dn^0u`>{Wq+>nZn{^H1!1q5LK3g~CNiir%^)Aip&wTdJ z_Wqpt^nWESnY1MnxE1uFIfVh=xKjUO@Mc7@o#~+j`o%9f>l0xbVTJyXRk-N;ljY}d z_Krc8 zu3Oe%Os8tbgzOXN_mh zXU;jsnB)i)&qT=$=cQh8AxXz%l7@nZzEcT9u36>i`$AZHVgwSKEP{POb2D{$|*y701y79{r!3~r*k&AitNp_fs)hlL!X=b!*e3fuyWymnPuA}w??&OW(RfT; zm@qWcUya9sqSi>ptn1rTo(`LDlys(_w(}9bcGsT^ z+Eo0Ah#BWFNqNrv9LM(lczM8)Q?%6yipa2`9UIvTizru(ljEOZBiW*UEuzjP)C(l& zvQ`ax^dV3uzhoR>Jx|gVwFn|H-;fq!uXgPxo{BJLYi%9F>E}bpV6d68#SBZkIHue> zn&8PzYwB86o@ll(Ut*GU(r9sBG7H1uY*7kQ({hFA60zQJ0KKBOL~UUGHLMh`(e_d| zgCa{6O|Ywdgg;b)>Hlne=cZNAp9VG6eM*dKiFImjXxeOM~*5nkuCi2h7FG0YM4u41a$%#h}PNSR%hj0md(C28$dJye4{o9}{lQ zDLMnbF%^V@@S6SF&JG?L!m^pWu?_`*`(5LhXZR6POr{Mf67BA()>iPb`R51O+qA+k zF0dJ{6wmj4N627d;uE~fUwOJ8*rQo_@#0kZPI>oW=S)_FDa2R^8EOTil<(gp_0krJ zC)}K4-hA^68V)6Rez=EN*Q!55%pM%z>hnm>^AaA|bQ5ZqdvY4mA>z1(fa1m%knMYj zcbSar2;1tEP7Po)`fhVe8)R8aZevfz6hRu%Og~a5#u0Bl*UpQIm?P`4REK^9wPbk0 z-8PCweju3BZtG7kO8~jtu>HmIqnt&nRQ>|2*1rWT)xV9o3Xb+hdRG4du3rY7@^i8P ztzs!NEWrcy!FGIkbpma~L9Rh%E@$1KS$7ZJS!8@k(-da88zIk!2^B8^5gfjr=o^%I zr&;N6>EW5+46g@HkE_Nd;&zCUzqF9yKo`^8sV@lfXyfBFt>SVQ0t=Q!Z$D_QK zGD2FRJ><|mb-OCa*d&|XqjnxDzHm&-Y|+CH01>JYL4qt z8_O)_8b#Jz>Gf-Eop!>HJY$OzSr*^9jI6QPQe+*RA3=@f2d(y6b2Xy0ORiqDnT~&A zX+CtqQ?7-nGD_+eSl|}h`oa1dK7I!_zciXy|3fW~27w35y6pmvh3|}2=eBj zS4Cey243-rM;pn$MQ_uqRATbmB(TyB8YW0;Z*O76sd6$Q_KO5?g3WL1X7R24$q}u? z4B2A`0&S0HAM7h`RWY3c4IEYv)IkZKE{ggUN>f<;h?J$UsZY;@gDdxt+Yp09a({UA zIL=G>rSN71<~Tf>34fj62D$-OyE4E=UZqHUM$7{tZ)+SKK7*>|K!xr9(dqG8EUR~Y*oDYfk>YxIKt*9lYgXgPuU z;?So4eZu}fT9!JS8MzqQ|AR^UpFjCuCX>IPH27kinb_F78M)e8+Svd7D!@0$uh0M6 zh*#>rI_Ce?tAzf3w}8Hbqx~0~T*%1MQrPgXCd=R56=gLS6eA4pE@rb;`a(qY99d{W z^K{Yt5DT>d*#_0JY3L?$C(h?pSZO9FMze6L?XDef?yS8??PECf99h}uwaBc!X!&d# z<22(`=&bx!*X|3gESHJ5o1;g*T%ffZF<|6)JITRVnVx}B(CTdI92jNnIj8|W76TOM zu;s9E@>@x4X-sS6;*mSMj+h?z4vb+5sv4kTR1TEk z6?W~Yy+n3xR8!36@jNP+S?h8Ya+;jzG6g3<_%$!4gfk*B786%79olCc)miwzNWhG%D3t%Pa z(3;(D*SMdpvfi318Y(_APF5!g8GRQ}RqMo~($a%vP}e&grTlYTQo-gnh^D7E92D`> z8XfL)oTjNqa%bVB+SA0!~4&E^x0~V4WnYN@Z!mL!ng7(9kDd?3NLisauN@Y zF=>6320OIs?E7cqytz~S@+_vP)AXWv_7s~}r(uE`%CuMiXwp(Y^K9rTDGwhHicB9) zEDh7vY{t$#RKV7^`o?0}84hYJW@XjFXoEf|gK(B$yq?~%u(Glu8fs<}1qg$AmF<%g z){y>)=I^6^AxPlh9MEN{J-!!|#>r2bC&T#8>L`2_a{_)k5x*g;Tyi_(`;X_(^oT_tO;3fqX$Zs|PO8wB!5Kd;=0p zPFQecYAG%RwiQe0QA9>VCV`ha%fsxNXjbRxqnzKnyC_=ti{eJNK&$pzKV_DGWubY3 z1F)?swB=QmMbPSrCJQdsd#K2@BAeOv{;L32^gG042V?c zoG_*->@p&k9vfA(j4VMi7Fd|UG+-4zD4Sd7Z^CEU>{T9G^nN*!DQ&}_!%`czlr^iK zA~(Po8AWa$@Syh9)?H_|P$6y#U54yR7t#r7_{CjYyT}jlv z6k8Z1YIIe-mRf8vwq54ei>u(#EOIsOdPXX|3T5sVKn93_;NzU=%-muw7W@(z16HO~ z(ji>5{+?oI~2fi>R8M#7Vs(w^~*9DZ$D~H|58tYE)%B1LmaWGU_MgXuD$L z`Mm>0oqaJo90fVeZ8F=JVpZ$MrDGYFOGvm=m6pH?C|+B^O1y)T(``p_m!H|IH!x)A z*k5e6)eTs4OsDWAB-VH!H|I*Gu741bi~=WD~u~RHJyuzbtQ;Z6koOWJqcS zw$ML;eE+G|Fhdpcj(x8@j)g6OI;|wvE*4Rbg{lI>WuNy}O{nYI;_%PnY?VbGBJ9h& zz6asojS&R@yGc;k(#Xol+VSs-Ep|e>j~@^?#ZMuN1ORe6`3aOS^`<4djHre5^_!L( zvKB(Hxlf@WsFSAiR}{WR3e?$Ylwi2m`WL|P}}A)lPS(sTt#7(&X*o&&8HBvmgGxd}xlPfr>BlE2cQ9ClvyL7?zXzZ!tpJdk9 zT)RJ8!tl%fY?%T{{S@Bk&?tFAN_5|=HrcmE3AVe8^peOJndYsxtcnH8NA^IL`C_3f~UdTM!j!C*e=#l{_LDmC9gi(!PngBh;EFC76 zMo8!S1)PYI;|yCc)$>D!Gbgnl58oX)j|^X8NAdvXuNzlRO3Rh&7h7-g-?H`O|J(ob z-xsO>qfYvdy2eUn4TU*=z(*5+&2eWRw8_$oiI!gh^_!k!0vt!%E+ugprC$* zuPYBbcPVtr+q&?Dcv&R}g8T$ANju7; zjz*Az(o-+KooAbf9-56z8*|{&Eh?k6w3yJf7@pL;#a&FU^~v2WrzD_~>5^MVZrqO5 zckG7`iVY`f%IZ$oWvQ1rBiia8zf1UFRrS9|o3=s@!)|6JmQ! zR)-=NzsbqHe8g`F6b|)h-+w>u!41j{QpnMp@4>i*w$khm@D*EUo-WR@*=Y*m0x!}v zBgY`uZ)({@{^M^U4LwYyfI64DRcWphY1P>rItRt7V%1eb-a2U3!?CKNmI z(zUKh6=VU}QD(gtOAKLQauwvDFWg?oK9X>rNDNGaox)=jmOK&GPD~UN0kv1KVQ{QE zdP1;D{@8;liyL0r4;WMFOL}V+pNYahBGOA1G1K0Q;+tV+Y zAC0L-q%EG9L0xz!%l`ANA8uN?)*rZ#A_*-3Vv^{7`mq=Xw*4eou@ZJVK7dH-(Th3# zhaWBfR2SIT;U@k~m@(9O@hk016p-5ONG>V}JAb{`jJe}3K4KI+5@r4webhh-!ibDp z5ns-UURBh-1~YnHbu30n{=orw2d*GoZ%-m(8<+j6k90na2-Gb8tu-`>z@EWzq}XI& z0lz~N{KW!YPJV$KH7HA-FoUT)4mU#&lX@v6L}DGM^Zbl?C%?%hj$@FFD5_{BQu(IX zq898_x7Ty;JXqvq^N9klaB5vhB|ir_azEgmCS?UMt2>@W_&jXq_k2#j`;uWS(magG_w2`1-mj%?yIZ()s6E|@wj(aHB|(l zhA$QXj96yS!@B@tlF+1ru3NYg?Gtq(O)g;C&p%0XLJ_>b@g>+jxW__x&05<#Fnx}{ zIh#2DdV71o;mz7J3t>#6YVm!Y?miJibTf+TQ&!AT;X4 z=*qJDa?FxV?nX%yEldd!%9CtD##u}32&0!A#s!<$=@1WZRHh$f&#Aa~2oqHKOQ?%3 z07uY5Kbb92?u08Se39DcbLMCjNT@VDx_nXL=cVzmm)WDRPQ3gTN$oU5A0;}v{^*1s z5bO+uLBWMN1FnR8lgYIB9f{O%b1K1_y$Q@?-1v~aMr&pAr+PgDG76F&t^`t92;q1x z^0r+7ndxlg#I7tXj5SJCAm(-Sdu)V4+GOKB1(PvnrV?4!%}psGN2B~LjTw=>wMLskp_B0(>wDseZ16v_4lwh~p(qyv`w{#LKNuXp?~|9ltmDajih zxt4>F3u03!rAK;waYl)*M@#yeM@!-nqdBck_dlfWHGtxR>93rz{kPinKQE9)|3`52 zcWtZ+XA3yM^zK^Uyf~<1AlT{YCw`+G4#W_Mh=cqN3~7ZNgU4W6C}ACsjq9>=iOgTA z9>%BoR;mstQ&P8bG}kaA$x)qu@o!xGuqd~xT)ebel=s#aWQSf*dtjf zUD9Q8O)>qPy}F4_&#IBJ@xplWRMMnLW34Uz1ePsrJ#x`;-8{u9)o*ctDlqQw$8YnC zm5!O;6%1^otqO}7)@<>~si^_$?dj@ORIy5`+?@Fm>yc<_lCv;0Mr+m>{xJLN5yRoj4 zQI|Wzp)Von%!)IZBr&yZ7!OSXC(4pvHQ1NWo@jQhLBr(L4-Ke8HNr2n5S|uj&Js5* zw89dwMofHJ+wjMo7_^}_MKZcrsSkrojm5};ZHTLa@+NQ%Kq`IKqWF2rLfJG*+Cyj35&= ztghmb`a(R~3j}PgM%hDkhCrw;2uDzGMaG4=iuxLkDcsBO<<1B9m=+Hmt6APW)rRs) zhYaOy*$O=@vAaq#z7HeE-U4nH3shF19G+8FFGdcooI`CXGbJ1?@t|czM^$k^M`;1- znU|vt8WJdRl<_|;%S^(-K>o1n>f%l^$p+t1cOS1aD*0?+Cbm|3*x8BhmF{%sFw1`>SJ;A>)Q*nkGw=4*1J1tKzdaI}Bw)}g!Y z;VL&Q0ls=&7o`G=9Y3LBCp-KI*FoCNM}N)fZMqHDdrkDV+#|DpT5SJ^>1~}K4GtU` z9|@=K4VVtgRRPv8X7MJ;S7%oRd^5=iO!>PjgjwJSln^!SoBFT~>>JvZeL$3#-(*Vu zH~5|d3S)7F*>U5_3f1S#s7Kg0+$$>T@9n68rFeH{wF`O=#22TwMrC=d!o2taspiKFE*%GW9Usr3ZF&a#ac7c=H$#W_kT$yE-)u_i;mKRs9xA@oR~;aZ8w~HZt;3Ba|goXY1=i>V%Q12k zL-LFyQKL#pX;ZbV-?a$TSOgA1H%qqWp$BnPJ1q;DXX^z=6H#5u#EfC%Q!?=DfYahO>?HMEJBzZW8K}rV6lX**1}DU>Wh7IpTDva3q-O*ITf`S2XjEOGC8%qMPMQ(jbwe_&L__ax%G&yPz&#ugrz$~3k&!{z&S=^F5;P$ zk^;8fR4#JG(059z0)b%yx$ebCZKkVm@`bZLi`0$N^0^mVC8v~t;Inr_PeHF9GP$yF z(5#^!V4({1$mhc+?;-Q(Ki}R{h*fe$^@!)AnI8Id6^VKmc>!aw(1BjVI#6e?+bS}b z^NOklxQds2AF>lU=#}J0=5c^y%_=$6i_M&TdB;njAkI@yk|P{yUUAO7F|&YB;R71KPBbPo@6htMPl8%J zf&x!+rSF8lqs=INN@nd?A8BO?G)uxPA(A+Tcp%VR;i+wLAg56=!+8VNYegedtWDyx z2^@y<3@1sQ&4)`#5|Ub#u=mP+t6%8zJS8we%@A0WfQ1qdJ3{~-_+cw8Q^jSa*idAO z92TI72Z|gY1(c}8LaRz{JVwO5c?B__*(>Y8PzxX&bA23|H2p0Vt5Wd@5S2<$7UqP0 zlzxOPP#K^{+2n4(Vsj4rTWMD|kR)n~E$Y-`iNMy)zIztO6fI zTUz*yx%Otc#IjQLC||xSkR2jAo`6+)M@*IjhC>iUK^9Q!F({CoEm}?DNGh)925(`C z?8C3mf5<&!ugO=EVZL@qeYxBG*F~k+|7|g#Xm4cne`?Bq?O|T@uAqX11g3=UElBDS z^pk;(WhNmg<%ZnxTGn1AIFn@J0=UY3B17RpA$)xMm2flJCV(dy;wyEym&Nh8pON`| zbN9j(raEBh1CdgZ8&LXf&Q-bh4q6*BK})9aZVY&$sdhv3!Dv07oMB_3pPa)L3l4x2 zAE|#*VsTE9d5>a%X?n;{1>sCH!{xg=S?bJVPicJeC{EQ(Tcg$ualz&RTv&7x(_^b) zw#xhR73uBy^b8xU^i$8p$~`mvN${k;0q-O&8m5OzD(DwDxp3W4VLK1pSf|qzYH*UA zl@MLGZSp37xFHt~i@Okgk8zH@dK&2{`0`5+)Ae^~Rsi$EaWFJkRpgzW@9v;>OGIQD z4S3{E#>p`ur*KfTQNCzj3tDQjhLSz?Rw9{35(Z4TMuJ<{$}#e>XTh5sD}ojk)RBj$+F!H3Ru;BLSMEr>p@6tuNS1#hg8 z_xeXw#q(97(mh{!5GBH714V60fqSy;Db@JspNimxsRf0KuX^#X zg{c2EL`424Ao9<0u~OMe0YwGiji!&bgh~(jrx1*WoFGqws;QA2078y|NYMCG<04M8 zZLzX>2Y8_ zL9hp|;V@uVazOuzH25LHm8l2!AWStURAjMq_ZaS z53k+;x)i+xJ+RlSmZ-hRl`47#Pg7$B!b1L5v7$*0wJ|I?TZ%VAOE^sx#E{v1zowK# z)cU~jJlnm)JgGR@aj~=qr@2PgD;SW?I$>H7ta@CRKztFGXFCgcrdYHGcjY+DDugUL z6iW|vSB*DCdQ4nbhE_9@^On73J1TT^VHsbfsLGV`BE2fNAXQYgsT4bCH-_Hmevm|_ zweg}zu&Ks6Ge6mp-u|i9f*dgbs^j8%CON6_WPJuT4tNVNySm?Rzc0rC*r>%01i==8 z*gEdu?V;1)^cX~JQi3t(uCy8c$@`@27cJ&n3jj=iJ|le#+Tn4GwNr>?*EVz)$r!H; zF4Z(zhF>}$9&Kr>H&grs;D3q{P)y{9!r6y0%@9VA1V_QH(kx`Sv87HpWeNs{jzvfO zQ+=U!C}3*G>ee$@lj>V%(%h^-y7nZPO(qc{_E?csti0TOZPaT*bx?iv9+79o9uTh_ z{i^QmN@M&y^qF7kZ^II3v-;3KvcttslEXyCPaM#kw07bMy!BCzp1yQSo`riBp8b$p zr%&)(a~89JiFwP_)4DShGm{wHznuQWoxPzYfr)|$U5%69E}IK z`q#MN#zaoBQR?D<7iFMlZ3(qE(T8)UX2chI3nw^$(V1)9b02YX?6{vnzgR$NX=x&f z*|@d`(3}&%WLW>|3b3iGi42g_Tf18zb$P>NC|QVe?Y2@%Ah6WUQmn{ zvUttfQ<`XmZ)>VKuQ+IB(JmS?hxy)D`TRMN2mf8VqPEdrtHkBud9UFYR=-`XA)2L4 z5q|uTCsmSS9Us}Nr;F?M;$+ryj@FI_SF*oyDz=PX789MSM_um}z8W^H`0Mp4fxmur?%WsYh$~BhXQ^$wquWq@b=pW)ysmP~XeuPfKlP-NT&OMDs(v zA4Q}Sa(|>{=TO-1LZuOrfPTb0!l}2{gfGrDJP7tJ~(3&5nTkg~q7=l%THj-GE}Os$Ce#Hl@{@Qa;-lz{DVp(0-Bb;!hHp z@n^WD6UU8Qs=>HdbDVB|Q0pL2>j-W3LNdgn+bTBX?&A~|WwBHA6F@u!$5 zw@KCm>Xj8yJYfbY98^3b8<~@BI#Ku5sDoL^jw>eQiPPT*n|cS)0yio^UBWe0@aeZP zB#|LjOC%a~9*&qJVW5y|9-$g3!WD8jEa|o`^rLx-%a%O2 zTTsKwoxwomiHf)uF}}ijX32hiaR8AKc4RF=wRIfl4|ot;5{u%j#rZ(baL%aHPYgQkx?yW0t^X|uV9nSm{Nj}H(;>r7| zW4zgutIMEoz|ta_<5`_YSq@XrnZrCQUwdia5dvxu_5^=u|8xsIwES;!KNJA zlQa|c6DEhghoK@93LHsk3Ry^tGfsOjnoDe@l12HV%?JLel*d`YvO}Yfq`2Q?g36@1SlWB) zoarc{n56q@)n_d|y7U|^jf*HdP~C-$)s~g!Y@Q}N^u|2d#w<7V4NwEf)*0I^ZXB=D zmU^2_XN=ln_e)DlD=eo+GV~S(c5yUv^YG1;{lmh5={WB6udQt{n*tc}@%K6JDio5! zk~7oN(ffu$AcV*)Oa8c*@n?MaMB%#^PBLlP%?DRGSYGI6Ik7 z7CSg4;NQd+Tl<72Q_wp0zH88?%xEB&2RCphJ#~|_-cu58gMAd zK|a~axyGOO{9weQS3$MZP6Wv-5}owX8%_jSx~o2~`oWs+x!n;`O|}20U^GMS&xCP? z{b21%?7B4ZQk$U1Quwce!{_*HjrJe6lucRWs7&uP`>WJJ`%&uX zEz^|MScVhKE;KLKw(_@>AAC$wSnFpJTXZrqc0*PsqtSB$`QS0D`s{bFaeM_&<_e}_ zUSnVNx;*50I$yp0%NESTMbF~YjYKW1<6vdb+tlk&cUa3!Tya;-JvKkxzlOq{)d_`v2Gv z2#qKSEQWXs5p1v5{klr&kr(}NU_KJ9Sv6^kdZW_ME>Sj}bRYMQ@YfL1t^Opn@+(RB!~VM@ z!S~-S2Bg1+kN+$JGL<$QP?P|CYnHR58%50Tc}cgC4Q2$gVZdMjdCI^BVfEk1@=c>w zbw=ql?N}vy=uEs%IZQ9x5&j6f5eUc25UIZGFWcMkOdmua=%-ibwCRrR^rw#Qmm3aO z&zW01M=mxWPiM(G6oRj&ECO^hgX|Q{{l-ZXB&-gWw0EbdtSVS1-=mk(PiWlRW37p6 zxTg+DJruKOYDUS(rNLPJCJ0}{EX6IEhg5f0Du2$BgiUD(qPuATh~uin=9zS=sOcab z+!-tqtdyw2`-EfJ#{B~SK!r9von?8fGbh!PNYSO_QOm7)iZu=?X)IWDNp($$gyAgx zPVuunVwuUC;^4!=6BeohIZf$KYEFXpb{nl=->$MF5%ggqpzyZLdyhn9oMFmL0sYaP}WAT}51r&TLy$ZtFK9)UdgSvn&5Fn*$6Rdzc!xcN`^+sn znWkgqIK^)`nOvOF1;CV=ej2gXVb^}NwG)9uEby&e*JW=k5Bv@3Lj3cGyt=m_+{p+^ zSWWE8kClO0e! zz#OGjLSfLY2gP>qWn6K*wme-)T$W)%_YA2ET6<-y)7{rv_H+maub z1Ws@tk`u^0Bu4h4Rq|u9iE*}#;`a+%zZP4p3x6&{@n?Z--6i;4x7&fZ-*l!IWfrVy z>C%}2a4>TFMY9CSw0*06wVfu3ZxUb79SLbOrKSoUpu`UOj~L}OfilZ;m>`zVK4T~4 zx(^y>l}l-suds3p2R*jIe)(?5MV$0*iMGnLLp%du6$|I*W4LhRAOGZxUp!J!Rtqlz zL#X>q5D5XP2=G@68&VTY(U9GRgkM?^!ChqVTZ2K{A& zSaAeyFml6qBduF+ihaf{Do@IzDG0ar&r}O1a|&q0w@)N@J1cq{Uu@N~r8{GY1Zc~1 z7jW-dB@NiBovMDJ>QBze8q6O6E_jw7drv{GpAd!HR3J7_{Ij7t^=t9#qXknVgTY1o zd+~z7yLb4$lXZ#^4MhuAI7bESy@N7jFY*8wbYK}c&v*bRJE}AIizYoUZ-J_ew2$@L zk*){QIXhZUS6!IgE6Gk|60WL@pZGzcBE~l(db`ixdlBeANq=xNey#^8s=?bovljej z{M7a6b-;KYr=VZXz%Tu`Du=%#^|5{QvJ_CxtR z{D+Y75IxN*|0^Hd{M&r+-);{5l@I<|FZ`=}Sg5G=m(Gz#h{|FqQJ*CbGEcq{peG=Z zKv-0{U~10NtJ^2BVIAyzS~qttP4PyJQW5%h_i#2WbO54lbaI^M(PDC)>+Wvp5idj! zXi74rC6ynT3F=Ga$g@7vUlGcDnbs2gO3IkR6vIMqvklZ=Vjf1{IS@lPmZQgIHEd)%8M0vzU*LwMGqh%OG!5j3!vTb-r}l?-eHsZ$~q zgr1s9G-bs!5KhcQJl1!VIH?^8ftQgcB3eeRHN55woO{5FvDARkqucr5g$v*zgXJI? z)MJa+Ce0HYRuX)@wieGP?7+q~gL$O}OVI>@n3)_+-+jZ#E>e zeU`|jkbFz`kn_+G)$jES3vI>ZJRSBpcm!YUxD%$Co^e)-dtA z&H9EXk|VxrPFfaFY};; z>$|v_Rn}CT-8eyg*P17S&Z|zdvMfO@F|9aSQz|C6c!)IiQ&{sXn3OBH-yFZ+tCAce z8MN^K5@+L>Fqqzgd>4y|_Y74|C$<3 z$BWNXhDPc^52nRwYA5aa8?P%CXJn;Z+AbhO;U8FJg@)SPGHgm z2_Avq7~h&W=O%x{EHGKQvO z4n?CBO3>bhatgncCl-|*Dtqh}BkBX3Ox!-#Da9|?o!{oV9||)7*{@8gjew_ zj^Tzdp7Mq7ZN>hWa`Ek92C@Q1^3*q2l2gmy*5fJwvSOMbyXK}Ho9C?VN}jGkp$nSy zJCb^-5vDxm2Rs~b4<%=%_-;VZ`(VCaaYU`Z9sno9&tRuY=pd_ZnG0obIl|dwy}2{@~;?B?p)4 zsDqsKkjC5ewmyH|PjP*kd_Et@wNaz)VNf0@)^UVbrgxz;vlKdE0}LYK?A#6RQSe%r ztsdyXYEdsS$H`glADlhFDg*z1#O+-&=31JocMAffGxp&;1(h<{4C>3mzaz8^ zA-Mz$N+8DYc``g55Gh2G_){^ubJ#3nv&sv*^V(kJv?6vHg(dW;Ydih!pwP>t?W4B- zx~RWB*AM^vf-d_1I&_)-hHku+%^W{s(3X_oEGT+%NrPttGrtcaZv<#YSXfzusAz7b z;{5ASDk)a$rfH|tap+dSyx)K?UQe{(xOKk$H@lvsjx5Y6?)p3T_r0U$EAm|mb(Vx$ z`9YG3wgYE43sXhgV!w9Ob(EC!k%H7yUZ@I}M$8}f)O!TNp|~B`!lOIorg^5~q+x}H zzN}>Tb{VGqzLV57{ex$~3-9ss@S|m_IhMhc7QE=oZ@>1Pb=0gdG`%b3jo3hW8|~-p zC7+J@bLMXZ1GN%oCvW7U$01fE*yXQIRY@Uc$&aS|NQ(Wwf%>_ai5JC>P!mNt-cHVV z_O=BuHi;K|7{WJliNj<54e(%6 z`lZz5A#nJLtjuEsZhUQ69Sun;QBCaLe(j~{b+*c(gRB6M6B))DOH27BbH_Eb=hPnb zD}lz<3f(P}<*z_fK3<{R_kGyGDPB8Ym0(bP&4Wg}tlvErxTupollE{hmUMbbAqyJt3xE5< ztg_Dy#9F94uojYSg1Ukgpb^7!e?tgN(GukFVV_Ux;9`26VB=z1eg4=xV>7G?YXr8W z-jD5<>ZCrjgK36Q?Zd%h!E&)$M`7nn6rhO+BA!0|c{7suI*S#L^&|gJDAqZzV=*s| z{JFdQ40%}e@r5_yprz>)?ArM{^2lS9APeb%2QUZAL;Na;Z)ClKb5K{9KItUSt&k26 znyZS;L=s{DPaXU<)<8<9_n0Px2XMgEh(J%0INPn^baHL=pHznOa{O;VN5UBL>+ptg zh#ISAcO{h$TH><`-hi$=SGKT6Q}PE@{2Xt7VJTH36hY9QKxD{Aj<(Hh=Im)+C$?-9)TxP9fjARulaG*jIac0vRak zx4Tmdbn>oexHWwX{2I5WBqw9={=Px4v@GGAw3yX`fqYwXp@n=O zNmTYL07Ai^wwa^nn7!CuAs{r$wpwZ(pAX8mrQ)=~Uq~d2W7Jl)Sv#HcZ@@E}yuJ&X z90G^&K-#-3!~EMk@jgNr5N4vjw2o)+y z{1xp!7U3D7ioU?et^S*cKaO|YH_MNo1P+*jMpS^qRshQ+jotp@_h!-k03I;$Us!zm z<_*wyhC2ARE30vPIeyNzbv|x-^cr2grE7p{AoNzk<6voFG+2TXk5t-Ta%4+a7X^oBMISrc8-E(550_f)ulZv5YtgUBczNI)q3?bTYtL=c9@6sDYMIluC(vg#|In^FWU(`rb`m^Q%{5d1WEE;bL+FbaV5t z#%?)|tMfd(^3>j@atGW~3uzXuHYFzL5GM`{R3{P*ma}26fverXfv-|QvHSS#kd%a! z(vU2~AR1J&h7U0RF#SB!JvcDPG=NZ9k@fGusPNB{sJ>E59Uc8U7$1Kbpz@D_m#hvwhCDrk zS}$n-tD}o)v6}Jdx$OSvmLahB^)|w_2<81Hfd!LeZ+JQpu&Cdo**MP)Zi4COsd1VZng_}q{>&udG7k;hbiEkHz2 z4*nPmn0tH=8frD;yh~IfCNvRBP#Wg%y!QmX_fG;g1v7i8p2lQ(vHGFw zT7~bGp#2c-unSozlo5r<8o{q#xm$PMKVywE$hg-I)YX3>SE!?6^dNS~i63hZg$v3S zs3eKJf}J4W4vc7aqPWv7y%HL!o(>T49wPBE#$v!2xg_YEazfv#ipG(X2ftkgq z4r_6lH`2dC9kve&AM_Wo`s-?^OH=7$?0h)UVR99no!y-i5o{V*qF)=tq-wwR2XV|4 zv;}F~*hd4F2_=gq@e(E|v5M6{Ali)+AXWq+^HZ$pl{r<^4qr0Po(g;wJIrNI5)0a~ z$d`svTd%|lkCF?ZTm-AcmEd;A(7*aAWPM+_5ad%nRT$@-xZ_n$uMQOS=!`*$L#Mc& zC~kRi^(Vk>%mY*SR4en=G8pUR&8%iuQTLnBy*Py)C+3ucK&-SJ?u1E!#JB=gqdU=f z6{|T?wr$(CZQHhO+qUh~={s{*lF3@RnM_vd zu^#HBzO}3N{{7LZ{7aKF9vkNUuG|p@C{fnMJr29Ssy*R$k#de9!r^el&?;W1*k$uC z$a1$&r2I!8-8io2KGqd1;%oRrBa5^=u=wFqfkj1g^C=qTi;TMlA&wtaZfTV^BaLL!tDZOMm?s6E5Jdpj{t z^W8*r3F(??m-58Hi5M1oI1<m%=o*NmS{dk>T zSY3ea*^Tx?*jKEzcI_;Tk1;=hl3+i8q6AMG8E~A&uFI^4NA>mPlddQ$x_Ce-wUYrr z%s1Smn-j|N@r2nMm=`){_%SJ*)(>UIaDH>-XZM;@qL+uopO1>A%U&M}i>^I7!{fD9 z9eoo+4t5w@Dy+|I_s{RR>^v_q4XRe)_lH5KShNOTaCW8%L1w~M8ByF!kZ$1@N$Vcv zY>~9v4t^`V zHZQNiiGE-UejH;aY6oR1bbhGsBAs{ULTf z{m%-5CN)S;EF+X}pD~h#H0gK}tN3CSW-i?Zv5qcz@f%I*GBJ(x=2_q2vumQY`ZYBZ zlZ)B$QZdKRh4`GS>ib3ZVSaBTyiJc~2YTXHjQ`cMJZ9k13b# zm%lf!+b>;L10y%xXm6>c%HynXA;g|)!Z@&Kd6+tT+bV4?fjl}1whhoM)^T?~{+|98 zL&@E~s#dA~tImUs&$fWF=yB2A)Ig4{R*7MvO=>++VdCpJvk@1fP09j{kgZpmmX|TI zzOPLW-r<*9FG!x)y}cvwHm}eWpVQ%(Rci%n2g5l;oPY1SHO7jVa3u1&KF+nxQs)F=nQP z1BH9>E%QWGsMXLy{Kw{gPuq9!DlJ;QOZsb-jfBW^%){W$=EKTPCaK2b9FM*j+tnEO zI2;Ky4Lrz5rWh69stbS{whAAN2}>4p{dyjCLb##l2-Nyem3POr0Zd156^wOeCp6T$ z)u-3j)-??!OMDAC`nCQD8qZX#Rlx_z%4&l^*Quz**{I0yTZ}}z6hmk*T6$7fD5ETo zeCigY?)(|TKYl0nHI0;rt3=H)hb(T#MvFb|8 zL3`u8yrF$P21;)RXX)stivTmjD*Pl~h)NtJ8mJQSdKn8cRG12nCf)R&-r_oopG<3% zXTweCpf9Q5yz487A=mCvd8wG;0w9YKf~Kx4Cd5SWLGAF|(kc6K+YEL8)moyqVQ1GA z6san8Dqc15s8n=s+K4Dkq|&CcW}*7!dB=qPwTeT*jQT04mB(Xok9HxrkR?+|30l^V z7E|E&>&P?nn^OcO?wH{oA5aOYNiJG0Mg^DmFZtVC(%1<`oD#xcyAJSs{wXsSrIi*`N{2%VLL2Z7Kx$=a5NQ02QMaO+)1_9wEU&VzQ zH_jfRFX)44LWmub6X>)K^9>S+A(Q3Ds_suJ92f0+oyx%n7DKd<#Rpb~LavIC@|ZNn z$IL^9pvVvN#SKlCs`iQ8%CW1SQ7sx_5OuO`Z%o{zg%cH#M(MVRAQ0y(A|MH+5sV9^ z5s{GV*O%rV#1h&eyb~c6S0XEgrxKKdN?Xhk7Gs1Da+aUvU62{OpISdWmKS3@JDz%J zH2PYDoKWgh+*pfVO|uqe_r`XvI(2xNG#5f;R8sO3G@4-#c%64%tL-jI{uR@lvRharbbPAl(^c@@fz149 zgdm+$+kX6|y&-i2_I-$e_6!17*1R_ka&h%KU zeS)*>PhM}f{fv}qVhmO#P(M8jK0jHp>diieSr@UrR&32hs2bA#V4ox|FUios|IrHj zysjjLV7F1ZUh{yyEvMZ#O-t~rvmg&4-H0!%4EsnFD4 zCwxLg;dD#&a02M`uqvmB$_39MR zrPL+r#b{oSS0!^Lrra^>OWg+W-S~%BtihiJwr`#;y-B=%a>(!JG5q;@d+?harW$fU z^fj=0KyXPQ;WmV@ZV+=WBt-8tB-IkK;lh$b@{79Y#|ALUdR)$P=0(&9Xn4@7U4Z;# zr?fy@eNLd8s3jOW172io;qtkWywqM`qAL z%bqR78g(zM^;(~m&Zi!s3=^2{C#34SEns9G*`jvO>*PzsnM#(mYj#xDAGJ zGFXcgnP`ZTk;4pcB5dj8+HdtV_aQiT?ryMvIObGxdK2*#6Jkn|Wh8XjqfBHIdM7(M zFDb%-HCB~LH6-f-n-XfH-|;PX8NYGjm3ZWr3kFZ<#$jVj z48zEyss8q`CiklCrz>)|&&ES6%0D_g;_$f*Xq_U1v>O)0L|+SISR=ANK1ZC%W{bO_ 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

    C!$*zSw#GuA=jQl%P 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

    x#~Gfa#T2^BWo| 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

    GQ<|{_@KT dD;|u{IZObeBpx2+Cdy4W5a9UxBnbU@{|DTGe%1g0 literal 0 HcmV?d00001 diff --git a/WEB-INF/lib/mysql-driver.jar b/WEB-INF/lib/mysql-driver.jar new file mode 100755 index 0000000000000000000000000000000000000000..eb3469d030d6f18ca3cd24613f9ea28e69c40f3b GIT binary patch literal 125961 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≫8as1gKiL`?N?*(|WK+}(4$DH?Lc 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 znA%0Dh_4dyd`XInr&YL%^KmZtf0O8jg~RSx=y}9 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%0A3E{G<5Pw{jDbGPDLp#`?zkh5&$~sG|9k z8vN9ts`%qWeV~8ko3;AMfob12J@dCK=D(Zd|8F?5P0Tc8AU|@*>>oB8B%TmjOWeM0 zcyIy1H;Xpu$nt2VxvJ(l3FU5*Ly36| z8e_VpjF1!_xaG~Et3Dw&hR7&c2`v|!)Xx)BInf&!IBv)-Vjjf(yT+NSP>2gU7Pk#e zT@r$qvIA8$nkc;7x=hr1bng8>J-Y8Rx_|fWd3DAfd#}B}YtHqV&DF)wlOPk4L47^B1_B6b zr#D>1O%fx*Mc~I3AeeGuRYuGODq`|tA-lVpx6;Z03TMni~f}Qs5*6n>|AL*QK ztHJvd6ux-U2&wfZRN=9t(VH_TQmwZ~2&GW6EG(2hL?8ApSe~Rid$P<903rnbH^SqS zZ5E{CaT$}q#tC{o8m?yk#HK2HOjK1xNgz4*rc_XKb?MH)NMCt|%$5 zXg}V+zr-=#$k!Uyz_IqPz9XBjEqQN63+YPd^FY$eWzs#1P7Y_Sg~`%Mb;Gw~l$N<_ zuxHAuEc18tujtfthrcgFtI>QBP$=?`;in=kF-sy@i}SmTR>G3XIz0(4oX0qvvN


    tJQgFZm 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 YpKoY=kIS#rz&p<}(v| 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≈di7S*P-dw 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

    w$C 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 literal 0 HcmV?d00001 diff --git a/WEB-INF/lib/tapestry-contrib-3.0-beta-3.jar b/WEB-INF/lib/tapestry-contrib-3.0-beta-3.jar new file mode 100755 index 0000000000000000000000000000000000000000..47ace41722c4f7c83ed8f1f50874fb083c6e1589 GIT binary patch literal 206015 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

    Wu3NHQku2rKjym`;W)Q8Id{vK$4J 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 z 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 literal 0 HcmV?d00001 diff --git a/WEB-INF/lib/torque-3.0.jar b/WEB-INF/lib/torque-3.0.jar new file mode 100755 index 0000000000000000000000000000000000000000..7d0d902aca240d031409561a57e209ff0f8940c3 GIT binary patch literal 324520 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 B`*eGq^tr0C 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ȝ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 literal 0 HcmV?d00001 diff --git a/WEB-INF/lib/village-2.0-dev-20021111.jar b/WEB-INF/lib/village-2.0-dev-20021111.jar new file mode 100755 index 0000000000000000000000000000000000000000..af381f356795e7b209f72e47d08b82557941441a GIT binary patch literal 26213 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 gYc&3j_}`x@ + + + Roster + + + + roster-application + + org.apache.tapestry.ApplicationServlet + + + org.apache.tapestry.application-specification + /org/thdl/roster/Roster.application + + + + org.apache.tapestry.disable-caching + true + + + + torque-properties-path + + /org/thdl/roster/roster-torque.properties + + + + roster-uploads-directory + + /Users/travis/webapps/roster/uploads/ + + + 0 + + + + + test-servlet + org.thdl.commons.TestServlet + 0 + + + + roster-application + /tapestry + + + + test-servlet + /test + + + + 120 + + + + + + + + roster.html + + + diff --git a/build.xml b/build.xml new file mode 100755 index 0000000..c72014a --- /dev/null +++ b/build.xml @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The THDL Roster Javadocs]]> + Copyright © 2003 THDL. All Rights Reserved.]]> + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/.DS_Store b/images/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0`-{0TZ*x1a>%*DmUy}iAxtgNP{ zrkRB|-zU(e!{o8gaA9FkVR6V8?7W3{h$0QpG&5S=eB)WM0E!ay8>Ppjl&X_4{7M zs~gBd!SDO~16cwK7I;k41c5nw=Lg@%%o8x)Q|gA|mTRhC%+goYZ6q=*uiK!X){ z5qp2H3I%9`kwp$Zbt|-ZZMk-#OgwJBDT8vhsKg{w#~KdF$|7TB77T&WCIeeVbl4|T z7`@&oG{fWP=;`Xw0?;`GXbl@b6B8^B4k!o-4)Xv)Hbf+70PkOefb~QmI3r@g0ssOk zR47P7-UKE95Nw#h20(@js|0A|m@lD&3>STiRJd>Q;nu7zX>js7f2hBH$;&Vn*v3fFdE0Cqsq^jHO}d1jUv;M3n=THn*A>Vpm(3 z&uDZ3DOiljhq!z`PiS!iH+j$B+kpZseS>~?IBjn`bc=F-Yzm162_*`ZmY0=BPKacX zU>pOGWK^GFdPQHQ7y}HEq^cKUotm%~T{{R11huh4Gzzr5Fhj4x79@to7dOhy&d)&1 zA_3BP!B4vz0|OWW0t1=>13w)DH{#?3+273G5(Nd-0N?~P00IW}+y?MR`1%0U&C6%t z2fP9WX>hAhU{^f=@Wdq~-~nPhZ~=E2Fh`&OJ_#R71X|cQ5CA`Q1SHx!sV+cEmIN?P z5Xo@OLwEpO&dXU4r%r(+zv27gFrEc`J9sJ#uwxBVg&FVdAWCD`KMd8RQKKLaB($$! IYefJ6I}v54ssI20 literal 0 HcmV?d00001 diff --git a/images/move_down.gif b/images/move_down.gif new file mode 100755 index 0000000000000000000000000000000000000000..8fb0088e03b9dd1c664df66dd02c852f1cf43063 GIT binary patch literal 586 zcmV-Q0=4}|Nk%w1VL1RQ0K@%*4dRy}iA&v$LzK ztC^XZjg5_igM)f{dUJDgW@cttSy@$8RYXKYGcz+QD=Q%(AsieW4-XFr2nYZG00000 z000000000000000A^8La6aWAKEC2ui0673E000I5ARvxpX`X1Ru59bRa4gSeVB2)A z3Jc>i1f8%naA=N_;BZ+yYLZK)5vh#onpCS0`>bkbT z*dhbNfq;+Z85nhUQ(but85$3EXMj$80Bi>i7)OGPUjqylP8kpgWs^=C7!77x0}U6Q z4+(`42@jP=7YnCf1PrTA4-ZZe4v9w=4Fi5_4V*`TqocLP$7>79&7&0z0?{S|3l-H) z6~)>o+}_pK+2bcX6wMV2>FVpz#k)9YJPCyye0MN!FsFHCN>S_vpKN;YKZBN4Nbil|@~ZPi*K YXy}8v1;Z3BO$g|hlDfm|T0#H-J0||&8~^|S literal 0 HcmV?d00001 diff --git a/images/move_down_off.gif b/images/move_down_off.gif new file mode 100755 index 0000000000000000000000000000000000000000..174baeb41bc9d3030024f4be7d506e7b46fd81dc GIT binary patch literal 449 zcmV;y0Y3gmNk%w1VL1RQ0J8u9|NsB@_xJDb@8{>|-rnBU*4E6-%)`UOy}iA)wY9CS zt)-=M)j#glr zWU38I+ZJkE5sG0eu&mRzf$O{4EeBNbhQ-*?M@){EKPL&=lxh$N3YB8WS}6g9LUEXE zC5M*x3rGkT-t$4ISWCq{!y*CLrVl-JUjz$)feBP;d1+NigoZa`fn$&d42@2Yd6G8^ ziwXp6T7`>wiwvQnS`3h;JqQZ}sunZ|uCEKJvomnFu(G=sEVg-Kz`??GuMEe?7XrP; z&Km+_vC|yT0odH#-rpT4;1>kCDJHT3%>%&V+W-Or7V+g0>hb_6`X}lX0|o_b1T+8- zV8A{w>KSZ80HA?T{~E$DFd)D~02KcPB=QeH$BqSVQiT*i(13u30Z8J*D6haoc@|F+ zAZfs&I)WV~e8gE2n8JOtVyoixtLwQfbX)WPl@3_BGA^-q8ahAWQ literal 0 HcmV?d00001 diff --git a/images/move_up.gif b/images/move_up.gif new file mode 100755 index 0000000000000000000000000000000000000000..711c86a7668e072566ca44838d9bb019ec77e700 GIT binary patch literal 527 zcmV+q0`UDuNk%w1VL1RQ0K@<{9 z000000000000000A^8La6aWAKEC2ui0673E000I5ARvxpX`X1Ru59bRa49TCY}3kQgG0F4TzJT+;lXS=9f#=ez`$6)mq%6`J3zc&Fl0<_DXVEKronEf zl$m(*l5b+xc6Vo184eFt5QlOM3V|jE4SgFK5DgGk5f2ZNlnag{3lNeT4hsmEO%VtT z5t10Cp8%nKf1an92(k_uhz_x`hZzr^0Jo{RvS%6)zQ4M#BE}o4pbpH=pv2Lr)5s#B z*eTM~;Vt9dJpnj1xuL+(qZBBJ=vmci&9D@#_FOwt zD+8`xyB@76v4U6!O#mF|3INd9m=btypcoVGSH2XQWRTcYf(TR>be^0fIFHyiA5nxf RvH5R8gd(1T9_=Fp06T^L(|rH{ literal 0 HcmV?d00001 diff --git a/images/move_up_off.gif b/images/move_up_off.gif new file mode 100755 index 0000000000000000000000000000000000000000..e23a43faffdfbae24e1ef8fac6992b57b2b5026a GIT binary patch literal 416 zcmV;R0bl+{Nk%w1VL1RQ0J8u9|NsB^`1tPb?&jv^-QC^R*4E6-%*DmUzP`S+w6v|Q zt)-=M%FhppY z!;&cF>24`vAk6UI7O}|2%;G?Tg4dfZTEG*5aVRSpP z5#GaZjG?9%i=rZ43>Vmza$T{K&(jJ9coPOyPF+-T1Zr=0gN!|l0Es<6VO~Rn5@80M z5|o84g$HT~niFAh6QFAV1`9(0r-Y85ft5(Ern4EWxx5>`z+1PW!yUrM!Nsl0ZOp&U z70J>UI&g3{)!W?N-rwNi9036XgA5{y8+zujE1r2RZ&zxUgeFkghs* zkVuoHKw0@b3d$&pKs}WI7<%mY(?iXY02ua=b+3ieS^(}9(P{)|nKNgO967RY-@a9=RxMew zWaiA7Jv}`wEiILmmBq!yX=!QE(a`|`0d8(?&d$!p#>SeOnu>~wl9G}F0sX-n3XOWUn%7W^(RXB}VSzgO`;v0wpfpyu}yeb6;8i@sk%X zU%h_w_6f`Lmm(rMe0*A*-bySyoJyaS;v^(CCNMHEE`HQ|qF~`6HbxG!fD;A$3+8xo zFof(VP;55sQs>E;FhSusD;JwYSPp}M{{c33HkFVLj|>F|ks`B{g32Pf#!4maGm95Y zI&xN+he6=R28R_voH{RaJ$5xX9_bN?2n*mi&@he5YpV+D3H$W9GIZO M;!sqs#KK?=08-_%LI3~& literal 0 HcmV?d00001 diff --git a/images/select_right_off.gif b/images/select_right_off.gif new file mode 100755 index 0000000000000000000000000000000000000000..452ce507c7663ea9fa2faf68c69030fc70673137 GIT binary patch literal 373 zcmV-*0gC=dNk%w1VI%-50J8u9|NsB^`1tSd@8;&_-rnBU*4E6-%*DmUy}iA)wY9CS zt)-=Q=!^9V<$ji*l&d@CK0R1^6(a0q_E*q4PF^ zp1c4A3cQmrjUEPjFaWT#MgU>OiPr2Iy0aOHBG Tgu&z8HBIW&QP4@PLj(Xj+0UTq literal 0 HcmV?d00001 diff --git a/images/show-inspector.gif b/images/show-inspector.gif new file mode 100755 index 0000000000000000000000000000000000000000..a1bd2ff1a6558834ea0275ecb4cc56ecd3e36abb GIT binary patch literal 3873 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 literal 0 HcmV?d00001 diff --git a/images/transparent.gif b/images/transparent.gif new file mode 100755 index 0000000000000000000000000000000000000000..20ab3e5fb30bd6d107ab1b157143006db3c6268b GIT binary patch literal 149 zcmZ?wbhEHb3 L#D>H}4Gh)*36~}D literal 0 HcmV?d00001 diff --git a/images/warning.gif b/images/warning.gif new file mode 100755 index 0000000000000000000000000000000000000000..cef7f69532cfbb10dff33c2f9a7a4e29218ae60a GIT binary patch literal 369 zcmV-%0gnDhNk%w1VJQG40HXf@|DT`#U||0M0KmY&|2aAT!^8g)694Y*A^8LW00093 zEC2ui04V?@06+u(IJ(?=LCA2Nz4sUq#vzhGRFP3(XjuWFxD+kmZ5;{=vexcAZw@R$ zVX--(jz|~*xrmGgoezhJ49W_dr2=LcvJ5h+v=-qtd1R4s@%8pvHO1zQ8(`~HMM(yr z<;5UrX-|I^cR2!@+*sx=t@s zW6)!tE?W~Gx__r0tn0FBP>;$sn=`%TA>Nai1Q~K?holyeZd9{??OO;{Wp-TIcj1-8 zQHy>_BHvq%S~hVrHzV<(0#w2si}%6gM|7A0Mxd ziHEMKmyeHqSeSc6#Jzy%x@Wm$G#VXO@}YU+cw*uehcj|~Ji2%MQ~%HXXa5oS*Ar0s z+2H3E4EQ;KbNrH~O_;toeo+NCa#KZrqL7q%iD`4?yOi^4{-4M<-f{x~my_7%L#l?d z}cxG8T{VR&lLZFmw- z#oh%PC=))`Q0pN?*fZ_6b^9hSQWUbbU5V5gEE-{H*4gNu_r$g5u8>2+Vy{W(F0W-* z@O;fPK}Bl?&7EZu{9>KaDXo_It^%#O&!gR~Yh#!@DVMDXZH$jK4s|dJK^+kzXYn$} z%C(A_BlCb%Mmd6SeGYwe*tmHljimJ^0!?~KGfM^+oh1E}`7u(IzR&f?o?d z3yFQWf7MIaT%G1|PGn{2`Ezg0@dU{ebT1!i{}o}=>F4nvGo_9s5L%9o%TI9E!hKBB zrIE#*?F1$rp=y2WqSl6IUO=BaY&yX+jFTZ!@O;53QClMknJOov6YFAGHrHqGJ3^q0 z)jYdAU$BwDoGcus5_29DZ`jSM_7E7*LL{OVSe~W!8v+-~5qu|w5nLQ#Q4|l@1&B(D znp&?&UKW@4Wj1Ka2khZq;lqnj$z>5AA!~j?t1o_(1m#H}VEEz|34atvA-2{(1WRyS z53h+z42Wq({aC2`Gl~$lJRRYWs8)J&HpjeM;~pQW=^=KW&^ z*URV8KAFTYP8}!QCe(oNU!B?L)a|Gzs(E+ma=U#O=#dVPd)2xjP?=~YAE)2HjbNX{ z?@_CURiiIB6`IX4AqCpUl6#{fK)r`47p_D;98^*u?i5`*41_yaYKO0Qvkr7ZCa!<(-<;1;ZN(b=~Ns5BsJ1x}9mm@M(~L=kpxDdX|ad*Z8Y1Ha<9BPSQ(2 zAmptW!8T4YwB*Y+y(sslrwZVW_=yerjloS@S5C|kt@C`M*fn}alF5zA)A^?TQ%x%g zcXIMX{0s-=55^xrc`k}%llyNWGr`Vol><|`AnFot@=lQiwZpgrw5uAxc5#z@on@ri zQ?Kfb$L0>x+hx@Qxgr9w{eNkS*T&nWu7j|w5?M(m(k4=7=#+#XkFi*FD*chuIg)q^ZyK}W-FK0=tsMqp` znQO-mPVya2SlHw+0YekNtSlYC;H_@tu> zyYytp6@{1h=1>06F?nhl|8~8vRh^4Iskfc5-w>Rp=s%}0O_yJ|@<#4=g{mATlyQJJwUsPhPiOWW2N+>K)Qov=L zVBMB#Dg4HCAGAqL)*gf(!Rj&j3S)Vw$~5hlTerUIOp2tp*IFqDLFQd)%9Qqg^DELO zIv-Zur#gp;$^mf5Ty}7W<4SSv-?0cMc9M+~RhU_qAw`@81EE;8`o`paxq0uyaGGfP z)A12`I~kilnz37v( + + +Roster Home + + + +

    Roster in Tapestry


    +
    Go to application
    +Test Unicode
    + + + + diff --git a/schema/.DS_Store b/schema/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    diff --git a/schema/roster-schema.xml b/schema/roster-schema.xml new file mode 100755 index 0000000..8141e76 --- /dev/null +++ b/schema/roster-schema.xml @@ -0,0 +1 @@ +
    \ No newline at end of file diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..20b7034095f74ebb6b23111ea27836ba113b98d5 GIT binary patch literal 6148 zcmeHK%}N6?5T3Cs6uk84&Aftd5K29GEA$2IZZAq;m8G5ozOZl5e)H41t-UHJGmv~q z<|msEHj^PDo^LnzL^C3qq6xALE{H5&R9(68HIOC7W9hrL^eyHR@GppbdqXd@rgvJO zeg7wPcRLk5%F%8!bfxY4fkvY?V<|?f`MQl z7zhS_gaJukkm-$K^ua(d5DXj{kozH_31-J?s8s0x&yPL##m9 zT!H4wUShCU4s7nwXSc70=1#0TBaZKUC|=kL4^C=MoDHK727-Z81|~M0N&bJpuQV=O zPc35>3u%RtHm6r^W6IFoRVu3+7p_H*i{)oFxFHI)KrX#+#|QDG<}jW^x3f* UN)%aFcVIjOl#u9xfnQ)?595k6WdHyG literal 0 HcmV?d00001 diff --git a/src/java/.DS_Store b/src/java/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..68394d946a0f96fa1ca3c7bbfa7384486f2d2d7b GIT binary patch literal 6148 zcmeHKOG*Pl5Uny<1l(ll&RMxr@CHMO3)fyilSl}R>5z#FcXI@f>J9Y0sxmM-J3&yY zpzC$lr#}y-drCxf_Pn|lnTp5+ji~Gl2+f18lL#IGm2;HkqA3fEINje6?tLUh_OiZh zdi#Ha=ltEojuKI;cG)aSX=uAZ+N10&{UBEu6=~%F+g>h@zE(D{afuhi6nTPPBW7!H z5AbbZ-S(H)*DuT49#SO($v`rY3?u_TX8>->?vkCh4^AD_O0M>z>BPSLE1MMlsfcMCmIo)5e4}TrlIdT@-EghIY0!B!xWZ)MV_y9$cHeLV# literal 0 HcmV?d00001 diff --git a/src/java/org/.DS_Store b/src/java/org/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..b3da765995ad6376440e55adbdf0b1e6f6d4518b GIT binary patch literal 6148 zcmeHKyH3ME5S#@IMWRVbdB4CPSW)-_ejoxPQCPB+K<|q0%BL~=ND&NGL=(+Qdvmw9 zbElia>jhw&&*2eR16a`=@#VwPeBXUxHx+TTIO7fb;qW@XOw+i?{ypH_JM1yxfDioO zcMQE_z<4^8x5%V`6p#W^Knh5KixjA8y1KvU6p^KX6u3qO{QJ=8j(y>r7@rOf(E<=V zhQm0IUV_*>Kz!i84o&9KLf6dObYzB0^btR8nXZZ literal 0 HcmV?d00001 diff --git a/src/java/org/thdl/.DS_Store b/src/java/org/thdl/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..0612f8d271526e82072e675c4c3d725eee5f68e4 GIT binary patch literal 6148 zcmeH~O-{ow5QU%HLMyS!lBJITH;AgTWrNtGq@Y$x35sc9nM-gK?!!@d<8h^i1eOTV zab-WpGvnA_RQ~{Q^X>8y$NA3AP+22f6vETn7@ssx+N#pRGI*yoA;L&7vIkQeRPM*Rjo7vMxaYztdE)O|5yCW9Nu=jp7vw}jKF^-;3kWk#hkNC zduwl=ve$a%J7!7Z*Gh$n_0A!H53-J&N2A)k)ajQeZB?ZgX^-JlI|xJ|Rv3X_An*w- C5j>dy literal 0 HcmV?d00001 diff --git a/src/java/org/thdl/roster/.DS_Store b/src/java/org/thdl/roster/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..6b82c90ac8dcdf912bb83656a87b29f6f394ee7c GIT binary patch literal 12292 zcmeHL&2AGh5FUpjRc)n~KdBs0bKpoL`UU}7A=DNMt$Jp&TiVb~HpFRAZ;^Nb-h>m+ z#FaOIZ^kaNo474KM2LK&b0+Nqi2cDEpFOqsPxDh%19VV^b)<(`cPOveMlQ}lG4U$$|>#QT%|&C2UmG zf_6y>l=%wOm%!6CAUd&S(FrY!PUwB<2)!*Gmv~on5+3r;uHq4M9gm#Z4?S=jDNg2{aSDL>gCN=UVX^j}mgU0xme34iJ|EwA-kC;cO56 zEqStoo(ho*9`UPicR}o#%^>!c1!=`{pH?9m{fSOss{!w@-JXodt74*`%(uYaU3v$^ znY{*P*u$>`HpjJJS?7GsJ74JQ`;m1ouKTTQS znS>UWA`5SYl|J^03-A#e4-)ui;y*scO<3afA6Z(AEbXx;E=EW1u}FJh@ffHs;wO`< zWQ;J6wR-`NkMQ0W*i~U~^=vP^Mznz6$npaARNi$tcHJ)Akh{Zk5rP>-Q9DQb(6@p~ zFv#E22m{wnz1(smE_43Bkv{*Q`n+^NWk4C29s_1(eRusi#`C%L*vOn~*HPc2a$&uZ zlLA2_={TgME965;|l&K#C==UEVPoZAF|6@7sjr#se5NM+eC + + + + +org.thdl.roster.Visit +org.thdl.roster.Global +true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/RosterConstants.java b/src/java/org/thdl/roster/RosterConstants.java new file mode 100755 index 0000000..ca20d66 --- /dev/null +++ b/src/java/org/thdl/roster/RosterConstants.java @@ -0,0 +1,10 @@ +package org.thdl.roster; + +public class RosterConstants +{ + protected final static String DRIVER = "com.mysql.jdbc.Driver"; + protected final static String USER = "moojoo"; + protected final static String PASSWORD = "googoo"; + protected final static String URL = "jdbc:mysql://localhost/Roster"; +} + diff --git a/src/java/org/thdl/roster/RosterEngine.java b/src/java/org/thdl/roster/RosterEngine.java new file mode 100755 index 0000000..ce9117b --- /dev/null +++ b/src/java/org/thdl/roster/RosterEngine.java @@ -0,0 +1,43 @@ +package org.thdl.roster; + +import org.apache.tapestry.engine.BaseEngine; +import org.apache.tapestry.request.RequestContext; +import org.apache.tapestry.form.IPropertySelectionModel; +import org.apache.torque.*; +import org.apache.torque.util.Criteria; +import java.util.*; +import java.io.*; +import javax.servlet.ServletException; +import java.util.ResourceBundle; + +import org.apache.tapestry.IRequestCycle; +import org.apache.tapestry.ApplicationRuntimeException; +import org.apache.tapestry.form.EnumPropertySelectionModel; +import org.apache.tapestry.form.IPropertySelectionModel; +import org.apache.tapestry.form.StringPropertySelectionModel; +import org.apache.tapestry.html.BasePage; +import org.apache.tapestry.contrib.palette.SortMode; +import org.thdl.roster.Visit; +import org.thdl.roster.om.*; + +public class RosterEngine extends BaseEngine +{ + private static final String[] PAGE_NAMES = { "Home", "Search", "People", "Organizations", "Projects", "Login" }; + private static final String[] PERSON_WIZARD_PAGES= { "Contact", "Background", "Activities", "Works", "Uploads" }; + + public String[] getPageNames() + { + return PAGE_NAMES; + } + public String[] getPersonWizardPages() + { + return PERSON_WIZARD_PAGES; + } + public boolean service(RequestContext context) throws ServletException, IOException + { + context.getRequest().setCharacterEncoding("UTF-8"); + + return super.service(context); + } + +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/RosterQuery.java b/src/java/org/thdl/roster/RosterQuery.java new file mode 100755 index 0000000..9f62780 --- /dev/null +++ b/src/java/org/thdl/roster/RosterQuery.java @@ -0,0 +1,243 @@ +package org.thdl.roster; + +import java.util.*; +import org.thdl.roster.om.*; +import org.apache.torque.*; +import org.apache.torque.util.*; + +public class RosterQuery implements java.io.Serializable +{ +//attributes + //private RosterQueryAgent queryAgent; + private HashMap memberTypes; + /*private String memberType; */ + + private String name; + private String organizationalBase; + private String anywhere; + private List representedCountries; //stores a reference to Global.representedCountries + private HashMap countries; + private Country country; + private String sql; + private Integer selectedDiscipline; + private Integer selectedLanguage; + private Integer selectedCulturalArea; + private Integer selectedPersonType; + private Integer selectedProjectType; + private Integer selectedOrganizationType; + +//accessors + + public void setSelectedPersonType(Integer selectedPersonType) { + this.selectedPersonType = selectedPersonType; + } + + public void setSelectedProjectType(Integer selectedProjectType) { + this.selectedProjectType = selectedProjectType; + } + + public void setSelectedOrganizationType(Integer selectedOrganizationType) { + this.selectedOrganizationType = selectedOrganizationType; + } + + public Integer getSelectedPersonType() { + return selectedPersonType; + } + + public Integer getSelectedProjectType() { + return selectedProjectType; + } + + public Integer getSelectedOrganizationType() { + return selectedOrganizationType; + } + + public void setPeople(Boolean people) { + getMemberTypes().put( MemberPeer.CLASSKEY_PERSON, people ); + } + + public void setProjects(Boolean projects) { + getMemberTypes().put( MemberPeer.CLASSKEY_PROJECT, projects ); + } + + public void setOrganizations(Boolean organizations) { + getMemberTypes().put( MemberPeer.CLASSKEY_ORGANIZATION, organizations ); + } + + public Boolean getPeople() { + return (Boolean)getMemberTypes().get( MemberPeer.CLASSKEY_PERSON ); + } + + public Boolean getProjects() { + return (Boolean)getMemberTypes().get( MemberPeer.CLASSKEY_PROJECT ); + } + + public Boolean getOrganizations() { + return (Boolean)getMemberTypes().get( MemberPeer.CLASSKEY_ORGANIZATION ); + } + public void setOrganizationalBase(String organizationalBase) { + this.organizationalBase = organizationalBase; + } + + public String getOrganizationalBase() { + return organizationalBase; + } + + public void setAnywhere(String anywhere) { + this.anywhere = anywhere; + } + + public String getAnywhere() { + return anywhere; + } + + public void setSelectedCulturalArea(Integer selectedCulturalArea) { + this.selectedCulturalArea = selectedCulturalArea; + } + + public Integer getSelectedCulturalArea() { + return selectedCulturalArea; + } + + public void setSelectedLanguage(Integer selectedLanguage) { + this.selectedLanguage = selectedLanguage; + } + + public Integer getSelectedLanguage() { + return selectedLanguage; + } + + public void setSelectedDiscipline(Integer selectedDiscipline) { + this.selectedDiscipline = selectedDiscipline; + } + + public Integer getSelectedDiscipline() { + return selectedDiscipline; + } + + public void setRepresentedCountries(List representedCountries) { + this.representedCountries = representedCountries; + } + + public List getRepresentedCountries() { + return representedCountries; + } + + public void setSelectedCountry( Boolean selectedCountry ) { + getCountries().put( getCountry(), selectedCountry ); + } + + public Boolean getSelectedCountry() { + Country key = getCountry(); + Boolean selected = (Boolean)getCountries().get( key ); + return selected; + } + + public void setCountries(HashMap countries) { + this.countries = countries; + } + + public HashMap getCountries() { + if ( null == countries ) + { + refreshCountries(); + } + return countries; + } + +/* public void setSelectedMemberType(Boolean selectedMemberType) { + getMemberTypes().put( getMemberType(), selectedMemberType ); + } + + public Boolean getSelectedMemberType() { + String key = getMemberType(); + Boolean selected = (Boolean)getMemberTypes().get( key ); + return selected; + } +*/ + public void setMemberTypes(HashMap memberTypes) { + this.memberTypes = memberTypes; + } + + public HashMap getMemberTypes() { + return memberTypes; + } + +/* public void setMemberType(String memberType) { + this.memberType = memberType; + } + public String getMemberType() { + return memberType; + } + +*/ + + public void setName(String name) { + this.name = name; + } + + public void setCountry(Country country) { + this.country = country; + } + + public String getName() { + return name; + } + + public Country getCountry() { + return country; + } + + public void setSql(String sql) { + this.sql = sql; + } + + public String getSql() { + return sql; + } +//helpers + public void clear() + { + setCountries( null ); + setName( null ); + setOrganizationalBase( null ); + setAnywhere( null ); + setSql( null ); + setSelectedDiscipline( null ); + setSelectedLanguage( null ); + setSelectedCulturalArea( null ); + setSelectedPersonType( null ); + setSelectedProjectType( null ); + setSelectedOrganizationType( null ); + } + public void refreshCountries() + { + setCountries( new HashMap() ); + Iterator countries = getRepresentedCountries().iterator(); + while (countries.hasNext()) + { + getCountries().put( countries.next(), Boolean.TRUE ); + } + } + +// constructors + public RosterQuery() + { + setCountries( new HashMap() ); + setMemberTypes( new HashMap() ); + /* getMemberTypes().put( MemberPeer.CLASSKEY_PERSON, Boolean.TRUE ); + getMemberTypes().put( MemberPeer.CLASSKEY_PROJECT, Boolean.TRUE ); + getMemberTypes().put( MemberPeer.CLASSKEY_ORGANIZATION, Boolean.TRUE ); */ + setPeople( Boolean.TRUE ); + setProjects( Boolean.TRUE ); + setOrganizations( Boolean.TRUE ); + } + public RosterQuery( List representedCountries ) + { + this(); + setRepresentedCountries( representedCountries ); + refreshCountries(); + //setQueryAgent( new RosterQueryAgent() ); + } + +} diff --git a/src/java/org/thdl/roster/RosterQueryAgent.java b/src/java/org/thdl/roster/RosterQueryAgent.java new file mode 100755 index 0000000..2c85f29 --- /dev/null +++ b/src/java/org/thdl/roster/RosterQueryAgent.java @@ -0,0 +1,301 @@ +package org.thdl.roster; + +import java.util.*; +import org.apache.commons.configuration.*; + +import org.apache.tapestry.*; +import org.apache.tapestry.form.*; +import org.apache.torque.*; +import org.apache.torque.util.*; +import org.thdl.roster.*; +import org.thdl.roster.om.*; + +public class RosterQueryAgent + { + public String esc( String rawText ) throws TorqueException + { + return SqlExpression.quoteAndEscapeText( rawText, Torque.getDB( Torque.getDefaultDB() ) ); + } + + // Custom Query helpers + + public String buildQuery( RosterQuery query) throws TorqueException + { + StringBuffer sql = new StringBuffer() ; + sql.append( " \n\nSELECT DISTINCT Member.* FROM Member " ); + sql.append( " \nLEFT JOIN PersonData ON Member.person_data_id = PersonData.id " ); + sql.append( " \nLEFT JOIN ProjectData ON Member.project_data_id = ProjectData.id " ); + sql.append( " \nLEFT JOIN OrganizationData ON Member.organization_data_id = OrganizationData.id " ); + sql.append( " \nLEFT JOIN ContactInfo ON Member.contact_info_id = ContactInfo.id " ); + sql.append( " \nLEFT JOIN Address ON ContactInfo.address_id = Address.id " ); + sql.append( " \nLEFT JOIN Publication ON Member.publication_id = Publication.id " ); + sql.append( " \nLEFT JOIN ResearchInterest ON Member.research_interest_id = ResearchInterest.id " ); + sql.append( " \nLEFT JOIN ResearchInterestDiscipline ON ResearchInterest.id = ResearchInterestDiscipline.research_interest_id " ); + sql.append( " \nLEFT JOIN ResearchInterestCulturalArea ON ResearchInterest.id = ResearchInterestCulturalArea.research_interest_id " ); + sql.append( " \nLEFT JOIN ResearchInterestLanguage ON ResearchInterest.id = ResearchInterestLanguage.research_interest_id " ); + sql.append( " \nLEFT JOIN PersonPersonType ON PersonData.id = PersonPersonType.person_data_id " ); + sql.append( " \nLEFT JOIN ProjectProjectType ON ProjectData.id = ProjectProjectType.project_data_id " ); + sql.append( " \nLEFT JOIN OrganizationOrganizationType ON OrganizationData.id = OrganizationOrganizationType.organization_data_id " ); + sql.append( " \nWHERE Member.deleted = 'false' " ); + appendNames( sql, query ); + appendOrganizationalBase( sql, query ); + appendAnywhere( sql, query ); + appendMemberTypes( sql, query ); + appendCountries( sql, query ); + appendDiscipline( sql, query ); + appendLanguage( sql, query ); + appendCulturalArea( sql, query ); + sql.append( " \nORDER BY OrganizationData.name, ProjectData.name, PersonData.lastname" ); + return sql.toString(); + } + + public List executeQuery( String sql ) throws TorqueException + { + List villageRecords = MemberPeer.executeQuery( sql ); + List members = MemberPeer.populateObjects( villageRecords ); + return members; + } + + public void appendCulturalArea( StringBuffer sql, RosterQuery query ) + { + if ( null != query.getSelectedCulturalArea() ) + { + sql.append( " \nAND ResearchInterestCulturalArea.cultural_area_id = " ); + sql.append( query.getSelectedCulturalArea() ); + } + } + + public void appendLanguage( StringBuffer sql, RosterQuery query ) + { + if ( null != query.getSelectedLanguage() ) + { + sql.append( " \nAND ResearchInterestLanguage.language_id = " ); + sql.append( query.getSelectedLanguage() ); + } + } + + public void appendDiscipline( StringBuffer sql, RosterQuery query ) + { + if ( null != query.getSelectedDiscipline() ) + { + sql.append( " \nAND ResearchInterestDiscipline.discipline_id = " ); + sql.append( query.getSelectedDiscipline() ); + } + } + + public void appendCountries( StringBuffer sql, RosterQuery query ) throws TorqueException + { + Iterator countries = query.getCountries().keySet().iterator(); + while ( countries.hasNext() ) + { + Country key = (Country)countries.next(); + Boolean value = (Boolean) query.getCountries().get( key ); + if ( value.equals( Boolean.FALSE ) ) + { + sql.append( " \nAND " ); + sql.append( AddressPeer.COUNTRY_ID ); + sql.append( " <> " ); + sql.append( key.getId() ); + } + } + } + + public void appendNames( StringBuffer sql, RosterQuery query ) throws TorqueException + { + if ( null != query.getName() && ! query.getName().equals( "" ) ) + { + String name = "%" + query.getName() + "%"; + name = esc( name ); + sql.append( " \nAND " ); + sql.append( " ( " ); + sql.append( " ( " ); + sql.append( " PersonData.firstname LIKE " ); + sql.append( name ); + sql.append( " \nOR" ); + sql.append( " PersonData.lastname LIKE " ); + sql.append( name ); + sql.append( " ) " ); + sql.append( " \nOR" ); + sql.append( " ProjectData.name LIKE " ); + sql.append( name ); + sql.append( " \nOR" ); + sql.append( " OrganizationData.name LIKE " ); + sql.append( name ); + sql.append( " )" ); + } + } + + public void appendOrganizationalBase( StringBuffer sql, RosterQuery query ) throws TorqueException + { + if ( null != query.getOrganizationalBase() && ! query.getOrganizationalBase().equals( "" ) ) + { + String orgBase = "%" + query.getOrganizationalBase() + "%"; + orgBase = esc( orgBase ); + sql.append( " \nAND " ); + sql.append( " ( " ); + sql.append( " PersonData.parent_organization LIKE " ); + sql.append( orgBase ); + sql.append( " \nOR" ); + sql.append( " ProjectData.parent_organization LIKE " ); + sql.append( orgBase ); + sql.append( " \nOR" ); + sql.append( " OrganizationData.parent_organization LIKE " ); + sql.append( orgBase ); + sql.append( " )" ); + } + } + + public void appendAnywhere( StringBuffer sql, RosterQuery query ) throws TorqueException + { + if ( null != query.getAnywhere() && ! query.getAnywhere().equals( "" ) ) + { + String param = "%" + query.getAnywhere() + "%"; + param = esc( param ); + sql.append( " \nAND " ); + sql.append( " ( " ); + sql.append( " PersonData.firstname LIKE " + param); + sql.append( " \nOR PersonData.middlename LIKE " + param ); + sql.append( " \nOR PersonData.lastname LIKE " + param ); + sql.append( " \nOR PersonData.bio LIKE " + param ); + sql.append( " \nOR PersonData.history LIKE " + param ); + sql.append( " \nOR PersonData.parent_organization LIKE " + param ); + sql.append( " \nOR PersonData.school LIKE " + param ); + sql.append( " \nOR PersonData.department LIKE " + param ); + sql.append( " \nOR PersonData.program LIKE " + param ); + sql.append( " \nOR PersonData.advisor LIKE " + param ); + sql.append( " \nOR PersonData.other_backgrounds LIKE " + param ); + sql.append( " \nOR PersonData.organization LIKE " + param ); + sql.append( " \nOR PersonData.division LIKE " + param ); + sql.append( " \nOR PersonData.title LIKE " + param ); + sql.append( " \nOR PersonData.job_description LIKE " + param ); + + sql.append( " \nOR ProjectData.name LIKE " + param ); + sql.append( " \nOR ProjectData.parent_organization LIKE " + param ); + sql.append( " \nOR ProjectData.divisions LIKE " + param ); + sql.append( " \nOR ProjectData.people LIKE " + param ); + sql.append( " \nOR ProjectData.description LIKE " + param ); + sql.append( " \nOR ProjectData.history LIKE " + param ); + sql.append( " \nOR ProjectData.resources LIKE " + param ); + sql.append( " \nOR ProjectData.education_programs LIKE " + param ); + + sql.append( " \nOR OrganizationData.name LIKE " + param ); + sql.append( " \nOR OrganizationData.parent_organization LIKE " + param ); + sql.append( " \nOR OrganizationData.divisions LIKE " + param ); + sql.append( " \nOR OrganizationData.people LIKE " + param ); + sql.append( " \nOR OrganizationData.description LIKE " + param ); + sql.append( " \nOR OrganizationData.history LIKE " + param ); + sql.append( " \nOR OrganizationData.resources LIKE " + param ); + sql.append( " \nOR OrganizationData.education_programs LIKE " + param ); + + sql.append( " \nOR Publication.formal_publications LIKE " + param ); + sql.append( " \nOR Publication.works_in_progress LIKE " + param ); + sql.append( " \nOR Publication.projects LIKE " + param ); + + sql.append( " \nOR ResearchInterest.interests LIKE " + param ); + sql.append( " \nOR ResearchInterest.activities LIKE " + param ); + sql.append( " \nOR ResearchInterest.collaboration_interests LIKE " + param ); + + sql.append( " ) " ); + } + } + + public void appendMemberTypes( StringBuffer sql, RosterQuery query ) throws TorqueException + { + Iterator memTypes = query.getMemberTypes().keySet().iterator(); + LinkedList sqlParts = new LinkedList(); + StringBuffer sqlPartsConcat = new StringBuffer(); + while ( memTypes.hasNext() ) + { + String key = (String)memTypes.next(); + Boolean value = (Boolean) query.getMemberTypes().get( key ); + if ( value.equals( Boolean.TRUE ) ) + { + StringBuffer tempSql = new StringBuffer(); + tempSql.append( MemberPeer.MEMBER_TYPE ); + tempSql.append( " LIKE " ); + tempSql.append( esc( key ) ); + if ( key.equals( MemberPeer.CLASSKEY_PERSON ) && null != query.getSelectedPersonType() ) + { + tempSql.append( " AND " ); + tempSql.append( PersonPersonTypePeer.PERSON_TYPE_ID ); + tempSql.append( " = " ); + tempSql.append( query.getSelectedPersonType() ); + } + else if ( key.equals( MemberPeer.CLASSKEY_PROJECT ) && null != query.getSelectedProjectType() ) + { + tempSql.append( " AND " ); + tempSql.append( ProjectProjectTypePeer.PROJECT_TYPE_ID ); + tempSql.append( " = " ); + tempSql.append( query.getSelectedProjectType() ); + } + else if ( key.equals( MemberPeer.CLASSKEY_ORGANIZATION ) && null != query.getSelectedOrganizationType() ) + { + tempSql.append( " AND " ); + tempSql.append( OrganizationOrganizationTypePeer.ORGANIZATION_TYPE_ID ); + tempSql.append( " = " ); + tempSql.append( query.getSelectedOrganizationType() ); + } + sqlParts.add( tempSql.toString() ); + } + } + + ListIterator iterator = sqlParts.listIterator(); + int index = 0; + String pieceOfSql; + while ( iterator.hasNext() ) + { + Object object = iterator.next(); + pieceOfSql = (String) object; + if ( index > 0 ) + { + sqlPartsConcat.append( " \nOR " ); + } + else + { + sqlPartsConcat.append( "\n" ); + } + sqlPartsConcat.append( " ( " ); + sqlPartsConcat.append( pieceOfSql ); + sqlPartsConcat.append( " ) " ); + index++; + } + sql.append( " \nAND ( " ); + sql.append( sqlPartsConcat.toString() ); + sql.append( " \n) " ); + } + + public RosterQueryAgent() throws Exception + { + java.io.InputStream stream = Torque.class.getClassLoader().getResourceAsStream("org/thdl/roster/roster-torque.properties"); + PropertiesConfiguration config = new PropertiesConfiguration(); + config.load( stream ); + if ( ! Torque.isInit() ) + { + Torque.init( config ); + } + } + public RosterQueryAgent( Configuration config ) throws Exception + { + if ( ! Torque.isInit() ) + { + Torque.init( config ); + } + } +//main + public static void main(String[] args) + { + try + { + RosterQuery query = new RosterQuery(); + RosterQueryAgent agent = new RosterQueryAgent(); + String sql = agent.buildQuery( query ); + System.out.println( sql ); + System.out.println( agent.executeQuery( sql ) ); + } + catch (Exception te ) + { + te.printStackTrace(); + } + } +} + diff --git a/src/java/org/thdl/roster/RosterTest.java b/src/java/org/thdl/roster/RosterTest.java new file mode 100755 index 0000000..b9767af --- /dev/null +++ b/src/java/org/thdl/roster/RosterTest.java @@ -0,0 +1,38 @@ +package org.thdl.roster; + +import java.util.*; +import org.thdl.roster.om.*; +import org.apache.torque.*; +import org.apache.torque.util.*; +import java.text.*; +public class RosterTest +{ + public void doStuff() + { + try + { + String sql = "SELECT DISTINCT Member.* FROM Member, PersonData, ProjectData, OrganizationData, ContactInfo, Address, ResearchInterest, ResearchInterestDiscipline, ResearchInterestCulturalArea, ResearchInterestLanguage WHERE Member.deleted = 'false' AND ( ( Member.person_data_id = PersonData.id AND ( PersonData.firstname LIKE '%travis%' OR PersonData.lastname LIKE '%travis%' ) ) OR ( Member.project_data_id = ProjectData.id AND ProjectData.name LIKE '%travis%' ) OR ( Member.organization_data_id = OrganizationData.id AND OrganizationData.name LIKE '%travis%' ) ) AND Member.research_interest_id = ResearchInterest.id AND ResearchInterest.id = ResearchInterestDiscipline.research_interest_id AND ResearchInterestDiscipline.discipline_id = 5 AND Member.research_interest_id = ResearchInterest.id AND ResearchInterest.id = ResearchInterestLanguage.research_interest_id AND ResearchInterestLanguage.language_id = 2 AND Member.research_interest_id = ResearchInterest.id AND ResearchInterest.id = ResearchInterestCulturalArea.research_interest_id AND ResearchInterestCulturalArea.cultural_area_id = 1"; + List villageRecords = MemberPeer.executeQuery( sql.toString() ); + System.out.println ( villageRecords ); + List members = MemberPeer.populateObjects( villageRecords ); + System.out.println ( members ); + } + catch (TorqueException te) { + te.printStackTrace( ); + } + } + public static void main( String[] srgs ) + { + try { + if ( ! Torque.isInit() ) + { + Torque.init( "./roster-torque.properties" ); + } + RosterTest rt = new RosterTest(); + rt.doStuff(); + } + catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/java/org/thdl/roster/TokenMaker.java b/src/java/org/thdl/roster/TokenMaker.java new file mode 100755 index 0000000..792ca5c --- /dev/null +++ b/src/java/org/thdl/roster/TokenMaker.java @@ -0,0 +1,26 @@ +package org.thdl.roster; + +import java.security.MessageDigest; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +public class TokenMaker +{ + public static String make() throws java.security.NoSuchAlgorithmException + { + long systime = System.currentTimeMillis(); + byte[] time = new Long(systime).toString().getBytes(); + + MessageDigest md5 = MessageDigest.getInstance("MD5"); + md5.update(time); + return toHex( md5.digest() ); + //System.err.println("Unable to calculate MD5 Digests.\nCould not create unique token"); + } + public static String toHex(byte[] digest) + { + StringBuffer buf = new StringBuffer(); + for (int i = 0; i < digest.length; i++) + buf.append( Integer.toHexString( (int)digest[i] & 0x00ff ) ); //param=BITWISE operation + return buf.toString(); + } +} diff --git a/src/java/org/thdl/roster/Visit.java b/src/java/org/thdl/roster/Visit.java new file mode 100755 index 0000000..e1d0a57 --- /dev/null +++ b/src/java/org/thdl/roster/Visit.java @@ -0,0 +1,75 @@ +package org.thdl.roster; + +import java.io.Serializable; +import org.thdl.roster.om.*; +import org.thdl.users.*; +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; + +public class Visit implements Serializable +{ +//attributes + private ThdlUser thdlUser; + private boolean authenticated = false; + private RosterMember member; + private String test; + private String token; +//accessors + public void setToken(String token) { + this.token = token; + } + public String getToken() { + return token; + } + public void setTest(String test) { + this.test = test; + } + public String getTest() { + return test; + } + public void setMember(RosterMember member) { + this.member = member; + } + public RosterMember getMember() { + return member; + } + public void setThdlUser(ThdlUser thdlUser) { + this.thdlUser = thdlUser; + } + + public ThdlUser getThdlUser() { + return thdlUser; + } + public void setAuthenticated(boolean authenticated) { + this.authenticated = authenticated; + } + public boolean isAuthenticated() { + return authenticated; + } + +//helpers + public String getSnapshot() throws TorqueException + { + StringBuffer snapshot = new StringBuffer(); + snapshot.append( getThdlUser() + " name: '" + getThdlUser().getFirstname() +"'"); + snapshot.append( "
    " ); + snapshot.append( getMember() ); + snapshot.append( "
    " ); + snapshot.append( isAuthenticated() ); + snapshot.append( "
    " ); + Person p = (Person) getMember(); + if (null != p) + { + snapshot.append( p.getPersonData().getPersonTypeIdList() ); + snapshot.append( "
    " ); + } + + return snapshot.toString(); + } +//constructors + public Visit() + { + setThdlUser( new ThdlUser() ); + setAuthenticated( false ); + } +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/.DS_Store b/src/java/org/thdl/roster/components/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..2747620ed2d81b833262d908b7fbf607870ff207 GIT binary patch literal 6148 zcmeHKOG*Pl5PhW)g4ty0vQHp*gJFmZcY+r%lTjp07)bnV2fTns^#=N?s|05N00I`QNQQSulM*y0jTc*bUAp#RvUYoDP+ z%azyoz5eE=X;)R#R?JX&Zt3q|*%z^d%K__iz&anywZ)T*g z?^aFKwhiSD3k5=fP#_ct1rAfd50UBYFnX{;fl%Ox70~@5(G?5F&MHP4hYpXpDQ809JG# fxyYT?pEPD(;n*4KDB7Os#JC7#L81r+{y>3mrFK1T literal 0 HcmV?d00001 diff --git a/src/java/org/thdl/roster/components/AbbreviatedInsert.html b/src/java/org/thdl/roster/components/AbbreviatedInsert.html new file mode 100755 index 0000000..50482d5 --- /dev/null +++ b/src/java/org/thdl/roster/components/AbbreviatedInsert.html @@ -0,0 +1,4 @@ + + + + diff --git a/src/java/org/thdl/roster/components/AbbreviatedInsert.java b/src/java/org/thdl/roster/components/AbbreviatedInsert.java new file mode 100755 index 0000000..45ed1d3 --- /dev/null +++ b/src/java/org/thdl/roster/components/AbbreviatedInsert.java @@ -0,0 +1,50 @@ +package org.thdl.roster.components; + +public class AbbreviatedInsert extends org.apache.tapestry.BaseComponent +{ +//attributes + private String value; + private Integer characterCount; + private boolean abbreviated; + //accessors + public void setValue(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + public void setCharacterCount(Integer characterCount) { + this.characterCount = characterCount; + } + + public Integer getCharacterCount() { + return characterCount; + } + + public void setAbbreviated(boolean abbreviated) { + this.abbreviated = abbreviated; + } + + public boolean getAbbreviated() { + return abbreviated; + } + + public String getAbbreviatedValue() + { + String value = getValue(); + int count = getCharacterCount().intValue(); + if ( null != value && value.length() > count ) + { + value = value.substring( 0, count ) + "...."; + setAbbreviated( true ); + } + else + { + setAbbreviated( false ); + } + return value; + } +} + diff --git a/src/java/org/thdl/roster/components/AbbreviatedInsert.jwc b/src/java/org/thdl/roster/components/AbbreviatedInsert.jwc new file mode 100755 index 0000000..0acda53 --- /dev/null +++ b/src/java/org/thdl/roster/components/AbbreviatedInsert.jwc @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/AddressDisplay.html b/src/java/org/thdl/roster/components/AddressDisplay.html new file mode 100755 index 0000000..e2295d1 --- /dev/null +++ b/src/java/org/thdl/roster/components/AddressDisplay.html @@ -0,0 +1,17 @@ + + +
    + + + + + + + + Country: + + + + + + diff --git a/src/java/org/thdl/roster/components/AddressDisplay.java b/src/java/org/thdl/roster/components/AddressDisplay.java new file mode 100755 index 0000000..802619a --- /dev/null +++ b/src/java/org/thdl/roster/components/AddressDisplay.java @@ -0,0 +1,23 @@ +package org.thdl.roster.components; + +import org.apache.tapestry.BaseComponent; +import org.apache.tapestry.IPage; +import org.apache.tapestry.IRequestCycle; +import org.apache.tapestry.IComponent; +import org.thdl.roster.Visit; +import org.thdl.roster.om.Address; + +public class AddressDisplay extends BaseComponent +{ +//attributes + private Address addressBean; +//accessors + public void setAddressBean(Address addressBean) { + this.addressBean = addressBean; + } + public Address getAddressBean() throws org.apache.torque.TorqueException + { + return addressBean; + } +//synthetic attribute accessors +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/AddressDisplay.jwc b/src/java/org/thdl/roster/components/AddressDisplay.jwc new file mode 100755 index 0000000..b9f0e83 --- /dev/null +++ b/src/java/org/thdl/roster/components/AddressDisplay.jwc @@ -0,0 +1,34 @@ + + + + + + + + + Street + + + + + + City + + + + + + Region + + + + + + Postal Code + + + + + diff --git a/src/java/org/thdl/roster/components/Border.html b/src/java/org/thdl/roster/components/Border.html new file mode 100755 index 0000000..f80d374 --- /dev/null +++ b/src/java/org/thdl/roster/components/Border.html @@ -0,0 +1,73 @@ + + + + + + +THDL Community Roster + + + + + + + + +
    + + + +
    + +
    + +
    +

    +

    Insert Message Here

    +

    Insert Warning Here

    + +
    + +
    +
    +

    Options

    +

    + +
    +
    + Logout
    +

    +
    +
    + +
    + + + + diff --git a/src/java/org/thdl/roster/components/Border.java b/src/java/org/thdl/roster/components/Border.java new file mode 100755 index 0000000..2a2c07e --- /dev/null +++ b/src/java/org/thdl/roster/components/Border.java @@ -0,0 +1,24 @@ +package org.thdl.roster.components; + +import org.apache.tapestry.BaseComponent; +import org.apache.tapestry.IPage; +import org.apache.tapestry.IRequestCycle; +import org.apache.tapestry.IComponent; +import org.thdl.roster.Visit; + +public class Border extends BaseComponent +{ +//attributes + private String pageName; +//accessors + public void setPageName(String value) { + pageName = value; + } + public String getPageName() { + return pageName; + } +//synthetic attribute accessors + public boolean getDisablePageLink() { + return pageName.equals( getPage().getPageName() ); + } +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/Border.jwc b/src/java/org/thdl/roster/components/Border.jwc new file mode 100755 index 0000000..69f2619 --- /dev/null +++ b/src/java/org/thdl/roster/components/Border.jwc @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + li + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/Century.html b/src/java/org/thdl/roster/components/Century.html new file mode 100755 index 0000000..155c4a3 --- /dev/null +++ b/src/java/org/thdl/roster/components/Century.html @@ -0,0 +1,2 @@ + + diff --git a/src/java/org/thdl/roster/components/Century.java b/src/java/org/thdl/roster/components/Century.java new file mode 100755 index 0000000..79d8675 --- /dev/null +++ b/src/java/org/thdl/roster/components/Century.java @@ -0,0 +1,43 @@ +package org.thdl.roster.components; + +import org.apache.tapestry.*; +import java.util.*; + +public class Century extends BaseComponent +{ +//attributes + private HashMap centuries; + private Integer century; +//accessors + public void setCentury(Integer century) { + this.century = century; + } + public Integer getCentury() { + return century; + } + private void setCenturies(HashMap centuries) { + this.centuries = centuries; + } + private HashMap getCenturies() { + return centuries; + } +//synthetic attribute accessors + public String getCenturyText() + { + String cent = (String)getCenturies().get( getCentury() ); + return cent; + } +//helper +//constructors + public Century() + { + HashMap map = new HashMap(); + String centuries[] = {"twenty-first", "twentieth", "nineteenth", "eighteenth", "seventeenth", "sixteenth", "fifteenth", "fourteenth", "thirteenth", "twelfth", "eleventh", "tenth", "ninth", "eighth", "seventh", "pre-seventh"}; + int centIntegers[] = {21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 0}; + for ( int i = 0; i < centuries.length; i++ ) + { + map.put( new Integer( centIntegers[i] ), centuries[i] ); + } + setCenturies( map ); + } +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/Century.jwc b/src/java/org/thdl/roster/components/Century.jwc new file mode 100755 index 0000000..e208b30 --- /dev/null +++ b/src/java/org/thdl/roster/components/Century.jwc @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/ConditionalInsert.html b/src/java/org/thdl/roster/components/ConditionalInsert.html new file mode 100755 index 0000000..833dd0d --- /dev/null +++ b/src/java/org/thdl/roster/components/ConditionalInsert.html @@ -0,0 +1,7 @@ + +: +
    + +
    +
    + diff --git a/src/java/org/thdl/roster/components/ConditionalInsert.java b/src/java/org/thdl/roster/components/ConditionalInsert.java new file mode 100755 index 0000000..6612bc5 --- /dev/null +++ b/src/java/org/thdl/roster/components/ConditionalInsert.java @@ -0,0 +1,19 @@ +package org.thdl.roster.components; + +public class ConditionalInsert extends org.apache.tapestry.BaseComponent +{ +//attributes + private String value; +//accessors + public void setValue(String value) { + this.value = value; + } + public String getValue() { + return value; + } + public boolean isDisplayWorthy() + { + return ( getValue() != null && ! java.util.regex.Pattern.matches( "\\s*", getValue() ) ); + } +} + diff --git a/src/java/org/thdl/roster/components/ConditionalInsert.jwc b/src/java/org/thdl/roster/components/ConditionalInsert.jwc new file mode 100755 index 0000000..cf329fa --- /dev/null +++ b/src/java/org/thdl/roster/components/ConditionalInsert.jwc @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/CountryDisplay.html b/src/java/org/thdl/roster/components/CountryDisplay.html new file mode 100755 index 0000000..34bdc70 --- /dev/null +++ b/src/java/org/thdl/roster/components/CountryDisplay.html @@ -0,0 +1,11 @@ + + +
    + + +Country: + + + + + diff --git a/src/java/org/thdl/roster/components/CountryDisplay.java b/src/java/org/thdl/roster/components/CountryDisplay.java new file mode 100755 index 0000000..a4b26a1 --- /dev/null +++ b/src/java/org/thdl/roster/components/CountryDisplay.java @@ -0,0 +1,19 @@ +package org.thdl.roster.components; + +import org.apache.tapestry.*; +import org.thdl.roster.om.Country; + +public class CountryDisplay extends BaseComponent +{ +//attributes + private Country countryBean; +//accessors + public void setCountryBean(Country countryBean) { + this.countryBean = countryBean; + } + public Country getCountryBean() { + return countryBean; + } +//synthetic attribute accessors +//helper +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/CountryDisplay.jwc b/src/java/org/thdl/roster/components/CountryDisplay.jwc new file mode 100755 index 0000000..ab24dfb --- /dev/null +++ b/src/java/org/thdl/roster/components/CountryDisplay.jwc @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/CulturalAreaDisplay.html b/src/java/org/thdl/roster/components/CulturalAreaDisplay.html new file mode 100755 index 0000000..48b2035 --- /dev/null +++ b/src/java/org/thdl/roster/components/CulturalAreaDisplay.html @@ -0,0 +1 @@ +, \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/CulturalAreaDisplay.java b/src/java/org/thdl/roster/components/CulturalAreaDisplay.java new file mode 100755 index 0000000..2cb0913 --- /dev/null +++ b/src/java/org/thdl/roster/components/CulturalAreaDisplay.java @@ -0,0 +1,80 @@ +package org.thdl.roster.components; + +import java.util.*; + +import org.apache.tapestry.html.BasePage; +import org.apache.tapestry.*; +import org.apache.torque.util.Criteria; +import org.apache.torque.*; + +import org.thdl.roster.om.*; +import org.thdl.roster.*; + +public class CulturalAreaDisplay extends BaseComponent +{ +//attributes + private ResearchInterest researchInterest; + private String CulturalArea; + private int index; +//accessors + public void setResearchInterest(ResearchInterest researchInterest) { + this.researchInterest = researchInterest; + } + public ResearchInterest getResearchInterest() { + return researchInterest; + } + public void setCulturalArea(String CulturalArea) { + this.CulturalArea = CulturalArea; + } + public String getCulturalArea() { + return CulturalArea; + } + public void setIndex(int index) { + this.index = index; + } + public int getIndex() { + return index; + } +//synthetic properties + public List getCulturalAreaList() + { + LinkedList culturalAreaStrings = new LinkedList(); + try + { + Criteria crit = new Criteria(); + crit.add( ResearchInterestCulturalAreaPeer.RESEARCH_INTEREST_ID, getResearchInterest().getId() ); + crit.addAscendingOrderByColumn( ResearchInterestCulturalAreaPeer.RELEVANCE ); + List ridList = ResearchInterestCulturalAreaPeer.doSelect( crit ); + ListIterator looper = ridList.listIterator(); + while( looper.hasNext() ) + { + ResearchInterestCulturalArea rid = (ResearchInterestCulturalArea) looper.next(); + String culturalArea = rid.getCulturalArea().getCulturalArea(); + culturalAreaStrings.add( culturalArea ); + } + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( te ); + } + return culturalAreaStrings; + } +//constructors + public CulturalAreaDisplay() + { + super(); + try + { + if ( ! Torque.isInit() ) + { + Global global = (Global) getPage().getGlobal(); + Torque.init( global.getTorqueConfig() ); + } + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( te ); + } + + } +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/CulturalAreaDisplay.jwc b/src/java/org/thdl/roster/components/CulturalAreaDisplay.jwc new file mode 100755 index 0000000..4f9d781 --- /dev/null +++ b/src/java/org/thdl/roster/components/CulturalAreaDisplay.jwc @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/DateFormatter.html b/src/java/org/thdl/roster/components/DateFormatter.html new file mode 100755 index 0000000..ebe04cd --- /dev/null +++ b/src/java/org/thdl/roster/components/DateFormatter.html @@ -0,0 +1,2 @@ + + diff --git a/src/java/org/thdl/roster/components/DateFormatter.java b/src/java/org/thdl/roster/components/DateFormatter.java new file mode 100755 index 0000000..e3ba875 --- /dev/null +++ b/src/java/org/thdl/roster/components/DateFormatter.java @@ -0,0 +1,26 @@ +package org.thdl.roster.components; + +import org.apache.tapestry.*; +import java.text.*; +import java.util.*; + +public class DateFormatter extends BaseComponent +{ +//attributes + private Date date; +//accessors + public void setDate(Date date) { + this.date = date; + } + public Date getDate() { + return date; + } +//helpers + public String getFormattedDate() + { + String date = null; + if (null != getDate() ) + date = DateFormat.getDateInstance().format( getDate() ); + return date; + } +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/DateFormatter.jwc b/src/java/org/thdl/roster/components/DateFormatter.jwc new file mode 100755 index 0000000..b4ccb80 --- /dev/null +++ b/src/java/org/thdl/roster/components/DateFormatter.jwc @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/DisciplineDisplay.html b/src/java/org/thdl/roster/components/DisciplineDisplay.html new file mode 100755 index 0000000..08af184 --- /dev/null +++ b/src/java/org/thdl/roster/components/DisciplineDisplay.html @@ -0,0 +1 @@ +, \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/DisciplineDisplay.java b/src/java/org/thdl/roster/components/DisciplineDisplay.java new file mode 100755 index 0000000..cb96e13 --- /dev/null +++ b/src/java/org/thdl/roster/components/DisciplineDisplay.java @@ -0,0 +1,80 @@ +package org.thdl.roster.components; + +import java.util.*; + +import org.apache.tapestry.html.BasePage; +import org.apache.tapestry.*; +import org.apache.torque.util.Criteria; +import org.apache.torque.*; + +import org.thdl.roster.om.*; +import org.thdl.roster.*; + +public class DisciplineDisplay extends BaseComponent +{ +//attributes + private ResearchInterest researchInterest; + private String Discipline; + private int index; +//accessors + public void setResearchInterest(ResearchInterest researchInterest) { + this.researchInterest = researchInterest; + } + public ResearchInterest getResearchInterest() { + return researchInterest; + } + public void setDiscipline(String Discipline) { + this.Discipline = Discipline; + } + public String getDiscipline() { + return Discipline; + } + public void setIndex(int index) { + this.index = index; + } + public int getIndex() { + return index; + } +//synthetic properties + public List getDisciplineList() + { + LinkedList disciplineStrings = new LinkedList(); + try + { + Criteria crit = new Criteria(); + crit.add( ResearchInterestDisciplinePeer.RESEARCH_INTEREST_ID, getResearchInterest().getId() ); + crit.addAscendingOrderByColumn( ResearchInterestDisciplinePeer.RELEVANCE ); + List ridList = ResearchInterestDisciplinePeer.doSelect( crit ); + ListIterator looper = ridList.listIterator(); + while( looper.hasNext() ) + { + ResearchInterestDiscipline rid = (ResearchInterestDiscipline) looper.next(); + String discipline = rid.getDiscipline().getDiscipline(); + disciplineStrings.add( discipline ); + } + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( te ); + } + return disciplineStrings; + } +//constructors + public DisciplineDisplay() + { + super(); + try + { + if ( ! Torque.isInit() ) + { + Global global = (Global) getPage().getGlobal(); + Torque.init( global.getTorqueConfig() ); + } + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( te ); + } + + } +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/DisciplineDisplay.jwc b/src/java/org/thdl/roster/components/DisciplineDisplay.jwc new file mode 100755 index 0000000..217201e --- /dev/null +++ b/src/java/org/thdl/roster/components/DisciplineDisplay.jwc @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/DocumentDisplay.html b/src/java/org/thdl/roster/components/DocumentDisplay.html new file mode 100755 index 0000000..dd6a596 --- /dev/null +++ b/src/java/org/thdl/roster/components/DocumentDisplay.html @@ -0,0 +1,12 @@ + + +
      + + + +
    \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/DocumentDisplay.java b/src/java/org/thdl/roster/components/DocumentDisplay.java new file mode 100755 index 0000000..7113502 --- /dev/null +++ b/src/java/org/thdl/roster/components/DocumentDisplay.java @@ -0,0 +1,50 @@ +package org.thdl.roster.components; + +import java.util.*; + +import org.apache.tapestry.html.BasePage; +import org.apache.tapestry.*; +import org.apache.torque.util.Criteria; +import org.apache.torque.*; + +import org.thdl.roster.om.*; +import org.thdl.roster.*; + +public class DocumentDisplay extends BaseComponent +{ +//attributes + private Member member; + private Document document; +//accessors + public void setMember(Member member) { + this.member = member; + } + public void setDocument(Document document) { + this.document = document; + } + public Member getMember() { + return member; + } + public Document getDocument() { + return document; + } +//helpers +//constructors + public DocumentDisplay() + { + super(); + /* try + { + if ( ! Torque.isInit() ) + { + Global global = (Global) getPage().getGlobal(); + Torque.init( global.getTorqueConfig() ); + } + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( te ); + } */ + + } +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/DocumentDisplay.jwc b/src/java/org/thdl/roster/components/DocumentDisplay.jwc new file mode 100755 index 0000000..4090536 --- /dev/null +++ b/src/java/org/thdl/roster/components/DocumentDisplay.jwc @@ -0,0 +1,22 @@ + + + + + + + + + + + li + + + + a + + + + diff --git a/src/java/org/thdl/roster/components/LanguageDisplay.html b/src/java/org/thdl/roster/components/LanguageDisplay.html new file mode 100755 index 0000000..247c69f --- /dev/null +++ b/src/java/org/thdl/roster/components/LanguageDisplay.html @@ -0,0 +1 @@ +, \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/LanguageDisplay.java b/src/java/org/thdl/roster/components/LanguageDisplay.java new file mode 100755 index 0000000..a2297ca --- /dev/null +++ b/src/java/org/thdl/roster/components/LanguageDisplay.java @@ -0,0 +1,80 @@ +package org.thdl.roster.components; + +import java.util.*; + +import org.apache.tapestry.html.BasePage; +import org.apache.tapestry.*; +import org.apache.torque.util.Criteria; +import org.apache.torque.*; + +import org.thdl.roster.om.*; +import org.thdl.roster.*; + +public class LanguageDisplay extends BaseComponent +{ +//attributes + private ResearchInterest researchInterest; + private String Language; + private int index; +//accessors + public void setResearchInterest(ResearchInterest researchInterest) { + this.researchInterest = researchInterest; + } + public ResearchInterest getResearchInterest() { + return researchInterest; + } + public void setLanguage(String Language) { + this.Language = Language; + } + public String getLanguage() { + return Language; + } + public void setIndex(int index) { + this.index = index; + } + public int getIndex() { + return index; + } +//synthetic properties + public List getLanguageList() + { + LinkedList languageStrings = new LinkedList(); + try + { + Criteria crit = new Criteria(); + crit.add( ResearchInterestLanguagePeer.RESEARCH_INTEREST_ID, getResearchInterest().getId() ); + crit.addAscendingOrderByColumn( ResearchInterestLanguagePeer.RELEVANCE ); + List ridList = ResearchInterestLanguagePeer.doSelect( crit ); + ListIterator looper = ridList.listIterator(); + while( looper.hasNext() ) + { + ResearchInterestLanguage rid = (ResearchInterestLanguage) looper.next(); + String language = rid.getLanguage().getLanguage(); + languageStrings.add( language ); + } + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( te ); + } + return languageStrings; + } +//constructors + public LanguageDisplay() + { + super(); + try + { + if ( ! Torque.isInit() ) + { + Global global = (Global) getPage().getGlobal(); + Torque.init( global.getTorqueConfig() ); + } + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( te ); + } + + } +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/LanguageDisplay.jwc b/src/java/org/thdl/roster/components/LanguageDisplay.jwc new file mode 100755 index 0000000..adc06f7 --- /dev/null +++ b/src/java/org/thdl/roster/components/LanguageDisplay.jwc @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/MemberTypeDisplay.html b/src/java/org/thdl/roster/components/MemberTypeDisplay.html new file mode 100755 index 0000000..32967c1 --- /dev/null +++ b/src/java/org/thdl/roster/components/MemberTypeDisplay.html @@ -0,0 +1 @@ +, \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/MemberTypeDisplay.java b/src/java/org/thdl/roster/components/MemberTypeDisplay.java new file mode 100755 index 0000000..068fbbd --- /dev/null +++ b/src/java/org/thdl/roster/components/MemberTypeDisplay.java @@ -0,0 +1,115 @@ +package org.thdl.roster.components; + +import java.util.*; + +import org.apache.tapestry.html.BasePage; +import org.apache.tapestry.*; +import org.apache.torque.util.Criteria; +import org.apache.torque.*; + +import org.thdl.roster.om.*; +import org.thdl.roster.*; + +public class MemberTypeDisplay extends BaseComponent +{ +//attributes + private Member member; + private String memberType; + private int index; +//accessors + public void setMember(Member member) { + this.member = member; + } + public Member getMember() { + return member; + } + public void setMemberType(String memberType) { + this.memberType = memberType; + } + public String getMemberType() { + return memberType; + } + public void setIndex(int index) { + this.index = index; + } + public int getIndex() { + return index; + } +//synthetic properties + public List getMemberTypeList() + { + LinkedList memberTypes = new LinkedList(); + try + { + List mmTypes = null; + Criteria crit = new Criteria(); + if ( member instanceof Person ) + { + crit.add( PersonPersonTypePeer.PERSON_DATA_ID, getMember().getMemberData().getId() ); + crit.addAscendingOrderByColumn( PersonPersonTypePeer.RELEVANCE ); + mmTypes = PersonPersonTypePeer.doSelect( crit ); + } + else if ( member instanceof Project ) + { + crit.add( ProjectProjectTypePeer.PROJECT_DATA_ID, getMember().getMemberData().getId() ); + crit.addAscendingOrderByColumn( ProjectProjectTypePeer.RELEVANCE ); + mmTypes = ProjectProjectTypePeer.doSelect( crit ); + } + else if ( member instanceof Organization ) + { + crit.add( OrganizationOrganizationTypePeer.ORGANIZATION_DATA_ID, getMember().getMemberData().getId() ); + crit.addAscendingOrderByColumn( OrganizationOrganizationTypePeer.RELEVANCE ); + mmTypes = OrganizationOrganizationTypePeer.doSelect( crit ); + } + + ListIterator looper = mmTypes.listIterator(); + while( looper.hasNext() ) + { + String displayText = null; + if ( member instanceof Person ) + { + PersonPersonType pt = (PersonPersonType) looper.next(); + displayText= pt.getPersonType().getPersonType(); + } + else if ( member instanceof Project ) + { + ProjectProjectType pt = (ProjectProjectType) looper.next(); + displayText= pt.getProjectType().getProjectType(); + } + else if ( member instanceof Organization ) + { + OrganizationOrganizationType ot = (OrganizationOrganizationType) looper.next(); + displayText= ot.getOrganizationType().getOrganizationType(); + } + memberTypes.add( displayText ); + } + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( te ); + } + catch ( RosterMemberTypeException rmte ) + { + throw new ApplicationRuntimeException( rmte ); + } + return memberTypes; + } +//constructors + public MemberTypeDisplay() + { + super(); + try + { + if ( ! Torque.isInit() ) + { + Global global = (Global) getPage().getGlobal(); + Torque.init( global.getTorqueConfig() ); + } + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( te ); + } + + } +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/MemberTypeDisplay.jwc b/src/java/org/thdl/roster/components/MemberTypeDisplay.jwc new file mode 100755 index 0000000..182a44a --- /dev/null +++ b/src/java/org/thdl/roster/components/MemberTypeDisplay.jwc @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/OrganizationDisplay.html b/src/java/org/thdl/roster/components/OrganizationDisplay.html new file mode 100755 index 0000000..0dd001d --- /dev/null +++ b/src/java/org/thdl/roster/components/OrganizationDisplay.html @@ -0,0 +1,34 @@ + + +
    + + +

    + Organization Types: + +
    + + + + +

    + +

    Back to top

    +

    Background

    + +

    + + + + + + + + +

    + + +
    +
    + + diff --git a/src/java/org/thdl/roster/components/OrganizationDisplay.java b/src/java/org/thdl/roster/components/OrganizationDisplay.java new file mode 100755 index 0000000..a017a0c --- /dev/null +++ b/src/java/org/thdl/roster/components/OrganizationDisplay.java @@ -0,0 +1,22 @@ +package org.thdl.roster.components; + +import org.apache.tapestry.BaseComponent; +import org.apache.tapestry.IPage; +import org.apache.tapestry.IRequestCycle; +import org.apache.tapestry.IComponent; +import org.thdl.roster.Visit; +import org.thdl.roster.om.*; + +public class OrganizationDisplay extends BaseComponent +{ +//attributes + private Organization organizationBean; +//accessors + public void setOrganizationBean(Organization organizationBean) { + this.organizationBean = organizationBean; + } + public Organization getOrganizationBean() { + return organizationBean; + } +//synthetic attribute accessors +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/OrganizationDisplay.jwc b/src/java/org/thdl/roster/components/OrganizationDisplay.jwc new file mode 100755 index 0000000..e8433ec --- /dev/null +++ b/src/java/org/thdl/roster/components/OrganizationDisplay.jwc @@ -0,0 +1,66 @@ + + + + + + + + + + + + + Parent Organization + + + + + + People + + + + + + Mailing List + + + + + + Overview + + + + + + Components + + + + + + History + + + + + + Education programs + + + + + + Resources + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/PersonDisplay.html b/src/java/org/thdl/roster/components/PersonDisplay.html new file mode 100755 index 0000000..be25ece --- /dev/null +++ b/src/java/org/thdl/roster/components/PersonDisplay.html @@ -0,0 +1,44 @@ + + +
    + + +

    + Person Types: +
    + + + +

    + +

    Back to top

    +

    Background

    +

    History

    +

    + +

    + +

    Current Position

    +

    + + + + + +

    +

    Education Information

    +

    + + + + + + + + +

    + +
    +
    + + diff --git a/src/java/org/thdl/roster/components/PersonDisplay.java b/src/java/org/thdl/roster/components/PersonDisplay.java new file mode 100755 index 0000000..2ed3ee6 --- /dev/null +++ b/src/java/org/thdl/roster/components/PersonDisplay.java @@ -0,0 +1,22 @@ +package org.thdl.roster.components; + +import org.apache.tapestry.BaseComponent; +import org.apache.tapestry.IPage; +import org.apache.tapestry.IRequestCycle; +import org.apache.tapestry.IComponent; +import org.thdl.roster.Visit; +import org.thdl.roster.om.*; + +public class PersonDisplay extends BaseComponent +{ +//attributes + private Person personBean; +//accessors + public void setPersonBean(Person personBean) { + this.personBean = personBean; + } + public Person getPersonBean() { + return personBean; + } +//synthetic attribute accessors +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/PersonDisplay.jwc b/src/java/org/thdl/roster/components/PersonDisplay.jwc new file mode 100755 index 0000000..753d07e --- /dev/null +++ b/src/java/org/thdl/roster/components/PersonDisplay.jwc @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Overview Bio + + + + + + History + + + + + + Organizational Base + + + + + + School + + + + + + Department + + + + + + Program + + + + + + Advisor + + + + + + Highest Degree Earned + + + + + + Year Began + + + + + + Finished + + + + + + Other Backgrounds + + + + + + Organization + + + + + + Division + + + + + + Title + + + + + + Start Date + + + + + + Job Description + + + + + diff --git a/src/java/org/thdl/roster/components/PhoneDisplay.html b/src/java/org/thdl/roster/components/PhoneDisplay.html new file mode 100755 index 0000000..9c9ded4 --- /dev/null +++ b/src/java/org/thdl/roster/components/PhoneDisplay.html @@ -0,0 +1,16 @@ + + +
    + + + + + : + + + + + + + + diff --git a/src/java/org/thdl/roster/components/PhoneDisplay.java b/src/java/org/thdl/roster/components/PhoneDisplay.java new file mode 100755 index 0000000..da3ef23 --- /dev/null +++ b/src/java/org/thdl/roster/components/PhoneDisplay.java @@ -0,0 +1,27 @@ +package org.thdl.roster.components; + +import org.apache.tapestry.BaseComponent; +import org.apache.tapestry.IPage; +import org.apache.tapestry.IRequestCycle; +import org.apache.tapestry.IComponent; +import org.thdl.roster.Visit; +import org.thdl.roster.om.Phone; + +public class PhoneDisplay extends BaseComponent +{ +//attributes + private Phone phoneBean; +//accessors + public void setPhoneBean(Phone phoneBean) { + this.phoneBean = phoneBean; + } + public Phone getPhoneBean() { + return phoneBean; + } + public boolean isDisplayWorthy() + { + //return ( null != getPhoneBean().getCountryCode() && null != getPhoneBean().getAreaCode() && null != getPhoneBean().getNumber() ); + return ( null != getPhoneBean().getNumber() ); + } +//synthetic attribute accessors +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/PhoneDisplay.jwc b/src/java/org/thdl/roster/components/PhoneDisplay.jwc new file mode 100755 index 0000000..d3106c3 --- /dev/null +++ b/src/java/org/thdl/roster/components/PhoneDisplay.jwc @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/ProjectDisplay.html b/src/java/org/thdl/roster/components/ProjectDisplay.html new file mode 100755 index 0000000..23f632e --- /dev/null +++ b/src/java/org/thdl/roster/components/ProjectDisplay.html @@ -0,0 +1,31 @@ + + +
    + + +

    +Project Types:
    + + + + +

    + +

    Back to top

    +

    Background

    + +

    + + + + + + + + +

    + +
    +
    + + diff --git a/src/java/org/thdl/roster/components/ProjectDisplay.java b/src/java/org/thdl/roster/components/ProjectDisplay.java new file mode 100755 index 0000000..16b0bcb --- /dev/null +++ b/src/java/org/thdl/roster/components/ProjectDisplay.java @@ -0,0 +1,22 @@ +package org.thdl.roster.components; + +import org.apache.tapestry.BaseComponent; +import org.apache.tapestry.IPage; +import org.apache.tapestry.IRequestCycle; +import org.apache.tapestry.IComponent; +import org.thdl.roster.Visit; +import org.thdl.roster.om.*; + +public class ProjectDisplay extends BaseComponent +{ +//attributes + private Project projectBean; +//accessors + public void setProjectBean(Project projectBean) { + this.projectBean = projectBean; + } + public Project getProjectBean() { + return projectBean; + } +//synthetic attribute accessors +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/ProjectDisplay.jwc b/src/java/org/thdl/roster/components/ProjectDisplay.jwc new file mode 100755 index 0000000..8f7495f --- /dev/null +++ b/src/java/org/thdl/roster/components/ProjectDisplay.jwc @@ -0,0 +1,66 @@ + + + + + + + + + + + + + Parent Organization + + + + + + People + + + + + + Mailing List + + + + + + Overview + + + + + + Components + + + + + + History + + + + + + Education programs + + + + + + Resources + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/forms/.DS_Store b/src/java/org/thdl/roster/components/forms/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 + +
    + + + +Street Address: + +
    +City: + +
    +Region: + +
    +Postal Code: + +
    + +Country:
    + + + + + diff --git a/src/java/org/thdl/roster/components/forms/AddressFields.java b/src/java/org/thdl/roster/components/forms/AddressFields.java new file mode 100755 index 0000000..be0e6be --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/AddressFields.java @@ -0,0 +1,61 @@ +package org.thdl.roster.components.forms; + +import java.util.*; +import org.apache.torque.*; +import org.apache.tapestry.*; +import org.apache.tapestry.form.*; +import org.thdl.roster.*; +import org.thdl.roster.om.*; + + +public class AddressFields extends BaseComponent +{ +//attributes + private Address addressBean; + private IPropertySelectionModel countryModel; +//accessors + + public void setAddressBean(Address addressBean) { + this.addressBean = addressBean; + } + + public Address getAddressBean() throws org.apache.torque.TorqueException + { + return addressBean; + } + + public void setCountryModel(IPropertySelectionModel countryModel) { + this.countryModel = countryModel; + } + public IPropertySelectionModel getCountryModel() { + if ( null == countryModel ) + setCountryModel( buildCountryModel() ); + return countryModel; + } +//helpers + public IPropertySelectionModel buildCountryModel() + { + try + { + if ( ! Torque.isInit() ) + { + Global global = (Global) getPage().getGlobal(); + Torque.init( global.getTorqueConfig() ); + } + EntitySelectionModel countryModel = new EntitySelectionModel(); + LinkedList list = new LinkedList( CountryPeer.doSelectAll() ); + Country country; + ListIterator looper = list.listIterator( 0 ); + while ( looper.hasNext() ) + { + country = (Country) looper.next(); + countryModel.add( country.getId(), country.getCountry() ); + } + return countryModel; + } + catch (Exception te) { + throw new ApplicationRuntimeException( te.getMessage(), te ); + } + } +//synthetic attribute accessors +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/forms/AddressFields.jwc b/src/java/org/thdl/roster/components/forms/AddressFields.jwc new file mode 100755 index 0000000..a2c1bdd --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/AddressFields.jwc @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/forms/OrganizationFields.html b/src/java/org/thdl/roster/components/forms/OrganizationFields.html new file mode 100755 index 0000000..0fae28c --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/OrganizationFields.html @@ -0,0 +1,62 @@ + + +
    + + +

    Organization Information

    + +

    +Organization name: +
    + +
    +Organizational Base: For Religious centers, please use the organizational base to indicate your religious affiliation separated by colons. First specify "Buddhist" or "Hindu". Then following a colon, specify sectarian identity. For Tibetan Buddhist Centers, use Geluk, Kagyu, Sakya, Nyingma, Bön, or Jonang. Thus "Buddhist:Kagyu", etc. +
    + +
    +Mailing list: If you have a mailing list for updates on your organization/project, please describe it briefly and how to subscribe. +
    + +
    + +History: +
    + +
    + +Components: +This refers to primary components of the organization which also have a separate identity, and as such may have their own roster entry (such as a University and its library). +
    + +
    --> +Education programs: +
    + +
    +Resources: +
    + + +

    + + +
    +
    + + diff --git a/src/java/org/thdl/roster/components/forms/OrganizationFields.java b/src/java/org/thdl/roster/components/forms/OrganizationFields.java new file mode 100755 index 0000000..cb558c4 --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/OrganizationFields.java @@ -0,0 +1,22 @@ +package org.thdl.roster.components.forms; + +import org.apache.tapestry.BaseComponent; +import org.apache.tapestry.IPage; +import org.apache.tapestry.IRequestCycle; +import org.apache.tapestry.IComponent; +import org.thdl.roster.Visit; +import org.thdl.roster.om.*; + +public class OrganizationFields extends BaseComponent +{ +//attributes + private OrganizationData organizationDataBean; +//accessors + public void setOrganizationDataBean(OrganizationData organizationDataBean) { + this.organizationDataBean = organizationDataBean; + } + public OrganizationData getOrganizationDataBean() { + return organizationDataBean; + } +//synthetic attribute accessors +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/forms/OrganizationFields.jwc b/src/java/org/thdl/roster/components/forms/OrganizationFields.jwc new file mode 100755 index 0000000..2fd5ac6 --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/OrganizationFields.jwc @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/forms/PersonFields.html b/src/java/org/thdl/roster/components/forms/PersonFields.html new file mode 100755 index 0000000..a417bda --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/PersonFields.html @@ -0,0 +1,81 @@ + + +
    + + + +

    Personal Information

    +

    +First name: + +
    +Middle name: + +
    +Last name: + +
    +Overview bio: Please write this in the third person so others can use it for a quick biographical sketch, and limit it to 100 words.
    + +
    +Further biographical details: +
    + +
    +Organizational Base: +
    + +
    +

    +

    Education Information

    +

    +School: + +
    +Department: + +
    +Program: + +
    +Advisor: + +
    +Higest degree earned: + +
    +Year began: + +
    +Year Finished: + +
    +Other Backgrounds:
    + +
    +

    + + +
    +
    + + diff --git a/src/java/org/thdl/roster/components/forms/PersonFields.java b/src/java/org/thdl/roster/components/forms/PersonFields.java new file mode 100755 index 0000000..db8877c --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/PersonFields.java @@ -0,0 +1,22 @@ +package org.thdl.roster.components.forms; + +import org.apache.tapestry.BaseComponent; +import org.apache.tapestry.IPage; +import org.apache.tapestry.IRequestCycle; +import org.apache.tapestry.IComponent; +import org.thdl.roster.Visit; +import org.thdl.roster.om.*; + +public class PersonFields extends BaseComponent +{ +//attributes + private PersonData personDataBean; +//accessors + public void setPersonDataBean(PersonData personDataBean) { + this.personDataBean = personDataBean; + } + public PersonData getPersonDataBean() { + return personDataBean; + } +//synthetic attribute accessors +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/forms/PersonFields.jwc b/src/java/org/thdl/roster/components/forms/PersonFields.jwc new file mode 100755 index 0000000..654b246 --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/PersonFields.jwc @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/forms/PhoneFields.html b/src/java/org/thdl/roster/components/forms/PhoneFields.html new file mode 100755 index 0000000..97e1015 --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/PhoneFields.html @@ -0,0 +1,11 @@ + + +
    + + + - - + + +
    + + diff --git a/src/java/org/thdl/roster/components/forms/PhoneFields.java b/src/java/org/thdl/roster/components/forms/PhoneFields.java new file mode 100755 index 0000000..f9021d2 --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/PhoneFields.java @@ -0,0 +1,22 @@ +package org.thdl.roster.components.forms; + +import org.apache.tapestry.BaseComponent; +import org.apache.tapestry.IPage; +import org.apache.tapestry.IRequestCycle; +import org.apache.tapestry.IComponent; +import org.thdl.roster.Visit; +import org.thdl.roster.om.Phone; + +public class PhoneFields extends BaseComponent +{ +//attributes + private Phone phoneBean; +//accessors + public void setPhoneBean(Phone phoneBean) { + this.phoneBean = phoneBean; + } + public Phone getPhoneBean() { + return phoneBean; + } +//synthetic attribute accessors +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/forms/PhoneFields.jwc b/src/java/org/thdl/roster/components/forms/PhoneFields.jwc new file mode 100755 index 0000000..67c541a --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/PhoneFields.jwc @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/forms/ProjectFields.html b/src/java/org/thdl/roster/components/forms/ProjectFields.html new file mode 100755 index 0000000..d369a2d --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/ProjectFields.html @@ -0,0 +1,57 @@ + + +
    + + +

    Project Information

    + +

    +Project name: +
    + +
    +Organizational Base: +
    + +
    +Mailing list: +
    + +
    + + History: +
    + +
    + + Education programs: +
    + +
    +Resources: +
    + + +

    + + +
    +
    + + diff --git a/src/java/org/thdl/roster/components/forms/ProjectFields.java b/src/java/org/thdl/roster/components/forms/ProjectFields.java new file mode 100755 index 0000000..410062c --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/ProjectFields.java @@ -0,0 +1,22 @@ +package org.thdl.roster.components.forms; + +import org.apache.tapestry.BaseComponent; +import org.apache.tapestry.IPage; +import org.apache.tapestry.IRequestCycle; +import org.apache.tapestry.IComponent; +import org.thdl.roster.Visit; +import org.thdl.roster.om.*; + +public class ProjectFields extends BaseComponent +{ +//attributes + private ProjectData projectDataBean; +//accessors + public void setProjectDataBean(ProjectData projectDataBean) { + this.projectDataBean = projectDataBean; + } + public ProjectData getProjectDataBean() { + return projectDataBean; + } +//synthetic attribute accessors +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/forms/ProjectFields.jwc b/src/java/org/thdl/roster/components/forms/ProjectFields.jwc new file mode 100755 index 0000000..9788e89 --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/ProjectFields.jwc @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/components/forms/WizardTabs.html b/src/java/org/thdl/roster/components/forms/WizardTabs.html new file mode 100755 index 0000000..3255e78 --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/WizardTabs.html @@ -0,0 +1,40 @@ +
    + +
      +
    • + +
    • +
    +
    +
    +
    +
    diff --git a/src/java/org/thdl/roster/components/forms/WizardTabs.java b/src/java/org/thdl/roster/components/forms/WizardTabs.java new file mode 100755 index 0000000..523f713 --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/WizardTabs.java @@ -0,0 +1,77 @@ +package org.thdl.roster.components.forms; + +import org.apache.tapestry.BaseComponent; +import org.apache.tapestry.IPage; +import org.apache.tapestry.IRequestCycle; +import org.apache.tapestry.IComponent; +import org.thdl.roster.Visit; + +public class WizardTabs extends BaseComponent +{ +//attributes + private String pageName; +//accessors + public void setPageName(String pageName) { + this.pageName = pageName; + } + public String getPageName() { + return pageName; + } + public String getHref() { + return "javascript:tabbedSubmit( '" + getPageName() + "' )"; + } + +/* private String[] pageNames; + private String[] pageLabels; + private int index; +//accessors + public void setPageNames(String[] pageNames) { + this.pageNames = pageNames; + } + public void setPageLabels(String[] pageLabels) { + this.pageLabels = pageLabels; + } + public String[] getPageNames() { + return pageNames; + } + public String[] getPageLabels() { + return pageLabels; + } + public String getPageName( int index ) { + return pageNames[ index ]; + } + public String getPageLabels( int index ) { + return pageLabels[ index ]; + } + public String getPageName() { + return pageNames[ getIndex() ]; + } + public String getPageLabels() { + return pageLabels[ getIndex() ]; + } + + public void setIndex(int index) { + this.index = index; + } + public int getIndex() { + return index; + } */ +//synthetic attribute accessors + + + public boolean getDisablePageLink() { + return getPageName().equals( getPage().getPageName() ); + } + public String getClassAttribute() { + String classAttribute = null; + if ( getDisablePageLink() ) + { + classAttribute="activeTab"; + } + else + { + classAttribute="tab"; + } + return classAttribute; + } +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/components/forms/WizardTabs.jwc b/src/java/org/thdl/roster/components/forms/WizardTabs.jwc new file mode 100755 index 0000000..b991252 --- /dev/null +++ b/src/java/org/thdl/roster/components/forms/WizardTabs.jwc @@ -0,0 +1,40 @@ + + + + + + + + + + + li + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/om/.DS_Store b/src/java/org/thdl/roster/om/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setCountryKey(ObjectKey key) throws TorqueException + { + + setCountryId(new Integer(((NumberKey) key).intValue())); + } + + + + /** + * Collection to store aggregation of collContactInfos + */ + protected List collContactInfos; + + /** + * Temporary storage of collContactInfos to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initContactInfos() + { + if (collContactInfos == null) + { + collContactInfos = new ArrayList(); + } + } + + /** + * Method called to associate a ContactInfo object to this object + * through the ContactInfo foreign key attribute + * + * @param l ContactInfo + * @throws TorqueException + */ + public void addContactInfo(ContactInfo l) throws TorqueException + { + getContactInfos().add(l); + l.setAddress((Address) this); + } + + /** + * The criteria used to select the current contents of collContactInfos + */ + private Criteria lastContactInfosCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getContactInfos(new Criteria()) + * + * @throws TorqueException + */ + public List getContactInfos() throws TorqueException + { + if (collContactInfos == null) + { + collContactInfos = getContactInfos(new Criteria(10)); + } + return collContactInfos; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this Address has previously + * been saved, it will retrieve related ContactInfos from storage. + * If this Address is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getContactInfos(Criteria criteria) throws TorqueException + { + if (collContactInfos == null) + { + if (isNew()) + { + collContactInfos = new ArrayList(); + } + else + { + criteria.add(ContactInfoPeer.ADDRESS_ID, getId() ); + collContactInfos = ContactInfoPeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ContactInfoPeer.ADDRESS_ID, getId()); + if (!lastContactInfosCriteria.equals(criteria)) + { + collContactInfos = ContactInfoPeer.doSelect(criteria); + } + } + } + lastContactInfosCriteria = criteria; + + return collContactInfos; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getContactInfos(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getContactInfos(Connection con) throws TorqueException + { + if (collContactInfos == null) + { + collContactInfos = getContactInfos(new Criteria(10), con); + } + return collContactInfos; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this Address has previously + * been saved, it will retrieve related ContactInfos from storage. + * If this Address is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getContactInfos(Criteria criteria, Connection con) + throws TorqueException + { + if (collContactInfos == null) + { + if (isNew()) + { + collContactInfos = new ArrayList(); + } + else + { + criteria.add(ContactInfoPeer.ADDRESS_ID, getId()); + collContactInfos = ContactInfoPeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ContactInfoPeer.ADDRESS_ID, getId()); + if (!lastContactInfosCriteria.equals(criteria)) + { + collContactInfos = ContactInfoPeer.doSelect(criteria, con); + } + } + } + lastContactInfosCriteria = criteria; + + return collContactInfos; + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("Address"); + fieldNames.add("City"); + fieldNames.add("Region"); + fieldNames.add("Zip"); + fieldNames.add("CountryId"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("Address")) + { + return getAddress(); + } + if (name.equals("City")) + { + return getCity(); + } + if (name.equals("Region")) + { + return getRegion(); + } + if (name.equals("Zip")) + { + return getZip(); + } + if (name.equals("CountryId")) + { + return getCountryId(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(AddressPeer.ID)) + { + return getId(); + } + if (name.equals(AddressPeer.ADDRESS)) + { + return getAddress(); + } + if (name.equals(AddressPeer.CITY)) + { + return getCity(); + } + if (name.equals(AddressPeer.REGION)) + { + return getRegion(); + } + if (name.equals(AddressPeer.ZIP)) + { + return getZip(); + } + if (name.equals(AddressPeer.COUNTRY_ID)) + { + return getCountryId(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getAddress(); + } + if (pos == 2) + { + return getCity(); + } + if (pos == 3) + { + return getRegion(); + } + if (pos == 4) + { + return getZip(); + } + if (pos == 5) + { + return getCountryId(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(AddressPeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + AddressPeer.doInsert((Address) this, con); + setNew(false); + } + else + { + AddressPeer.doUpdate((Address) this, con); + } + } + + + + if (collContactInfos != null) + { + for (int i = 0; i < collContactInfos.size(); i++) + { + ((ContactInfo) collContactInfos.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public Address copy() throws TorqueException + { + return copyInto(new Address()); + } + + protected Address copyInto(Address copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setAddress(address); + copyObj.setCity(city); + copyObj.setRegion(region); + copyObj.setZip(zip); + copyObj.setCountryId(country_id); + + copyObj.setNew(false); + + + List v = getContactInfos(); + for (int i = 0; i < v.size(); i++) + { + ContactInfo obj = (ContactInfo) v.get(i); + copyObj.addContactInfo(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public AddressPeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseAddressPeer.java b/src/java/org/thdl/roster/om/BaseAddressPeer.java new file mode 100755 index 0000000..393fc81 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseAddressPeer.java @@ -0,0 +1,880 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseAddressPeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "Address"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(AddressMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the ADDRESS field */ + public static final String ADDRESS; + /** the column name for the CITY field */ + public static final String CITY; + /** the column name for the REGION field */ + public static final String REGION; + /** the column name for the ZIP field */ + public static final String ZIP; + /** the column name for the COUNTRY_ID field */ + public static final String COUNTRY_ID; + + static + { + ID = "Address.ID"; + ADDRESS = "Address.ADDRESS"; + CITY = "Address.CITY"; + REGION = "Address.REGION"; + ZIP = "Address.ZIP"; + COUNTRY_ID = "Address.COUNTRY_ID"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(AddressMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 6; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.Address"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseAddressPeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(ADDRESS); + criteria.addSelectColumn(CITY); + criteria.addSelectColumn(REGION); + criteria.addSelectColumn(ZIP); + criteria.addSelectColumn(COUNTRY_ID); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Address row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + Address obj = (Address) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + Address obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setAddress(row.getValue(offset + 1).asString()); + obj.setCity(row.getValue(offset + 2).asString()); + obj.setRegion(row.getValue(offset + 3).asString()); + obj.setZip(row.getValue(offset + 4).asString()); + obj.setCountryId(row.getValue(offset + 5).asIntegerObj()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseAddressPeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(AddressPeer.row2Object(row, 1, + AddressPeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseAddressPeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseAddressPeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Address obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(Address obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Address obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Address obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Address) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(Address obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(Address) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Address obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(Address) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Address obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseAddressPeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( Address obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(ADDRESS, obj.getAddress()); + criteria.add(CITY, obj.getCity()); + criteria.add(REGION, obj.getRegion()); + criteria.add(ZIP, obj.getZip()); + criteria.add(COUNTRY_ID, obj.getCountryId()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Address retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Address retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + Address retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Address retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (Address)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + + + /** + * selects a collection of Address objects pre-filled with their + * Country objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in AddressPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinCountry(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + AddressPeer.addSelectColumns(c); + int offset = numColumns + 1; + CountryPeer.addSelectColumns(c); + + + c.addJoin(AddressPeer.COUNTRY_ID, + CountryPeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = AddressPeer.getOMClass(); + + Address obj1 = (Address) AddressPeer + .row2Object(row, 1, omClass); + + + omClass = CountryPeer.getOMClass(); + Country obj2 = (Country)CountryPeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + Address temp_obj1 = (Address)results.get(j); + Country temp_obj2 = (Country)temp_obj1.getCountry(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addAddress(obj1); + break; + } + } + if (newObject) + { + obj2.initAddresss(); + obj2.addAddress(obj1); + } + results.add(obj1); + } + return results; + } + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseContactInfo.java b/src/java/org/thdl/roster/om/BaseContactInfo.java new file mode 100755 index 0000000..679a388 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseContactInfo.java @@ -0,0 +1,1047 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to ContactInfo + */ +public abstract class BaseContactInfo extends BaseObject +{ + /** The Peer class */ + private static final ContactInfoPeer peer = + new ContactInfoPeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the contact_name field + */ + private String contact_name; + + /** + * The value for the email field + */ + private String email; + + /** + * The value for the website field + */ + private String website; + + /** + * The value for the phone field + */ + private Integer phone; + + /** + * The value for the fax field + */ + private Integer fax; + + /** + * The value for the address_id field + */ + private Integer address_id; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + + // update associated Member + if (collMembers != null) + { + for (int i = 0; i < collMembers.size(); i++) + { + ((Member) collMembers.get(i)) + .setContactInfoId(v); + } + } + } + + + /** + * Get the ContactName + * + * @return String + */ + public String getContactName() + { + return contact_name; + } + + + /** + * Set the value of ContactName + * + * @param v new value + */ + public void setContactName(String v) + { + + + + if (!ObjectUtils.equals(this.contact_name, v)) + { + this.contact_name = v; + setModified(true); + } + + + } + + + /** + * Get the Email + * + * @return String + */ + public String getEmail() + { + return email; + } + + + /** + * Set the value of Email + * + * @param v new value + */ + public void setEmail(String v) + { + + + + if (!ObjectUtils.equals(this.email, v)) + { + this.email = v; + setModified(true); + } + + + } + + + /** + * Get the Website + * + * @return String + */ + public String getWebsite() + { + return website; + } + + + /** + * Set the value of Website + * + * @param v new value + */ + public void setWebsite(String v) + { + + + + if (!ObjectUtils.equals(this.website, v)) + { + this.website = v; + setModified(true); + } + + + } + + + /** + * Get the Phone + * + * @return Integer + */ + public Integer getPhone() + { + return phone; + } + + + /** + * Set the value of Phone + * + * @param v new value + */ + public void setPhone(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.phone, v)) + { + this.phone = v; + setModified(true); + } + + + if (aPhoneRelatedByPhone != null && !ObjectUtils.equals(aPhoneRelatedByPhone.getId(), v)) + { + aPhoneRelatedByPhone = null; + } + + } + + + /** + * Get the Fax + * + * @return Integer + */ + public Integer getFax() + { + return fax; + } + + + /** + * Set the value of Fax + * + * @param v new value + */ + public void setFax(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.fax, v)) + { + this.fax = v; + setModified(true); + } + + + if (aPhoneRelatedByFax != null && !ObjectUtils.equals(aPhoneRelatedByFax.getId(), v)) + { + aPhoneRelatedByFax = null; + } + + } + + + /** + * Get the AddressId + * + * @return Integer + */ + public Integer getAddressId() + { + return address_id; + } + + + /** + * Set the value of AddressId + * + * @param v new value + */ + public void setAddressId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.address_id, v)) + { + this.address_id = v; + setModified(true); + } + + + if (aAddress != null && !ObjectUtils.equals(aAddress.getId(), v)) + { + aAddress = null; + } + + } + + + + + + + + private Address aAddress; + + /** + * Declares an association between this object and a Address object + * + * @param v Address + * @throws TorqueException + */ + public void setAddress(Address v) throws TorqueException + { + if (v == null) + { + setAddressId((Integer)null); + } + else + { + setAddressId(v.getId()); + } + aAddress = v; + } + + + /** + * Get the associated Address object + * + * @return the associated Address object + * @throws TorqueException + */ + public Address getAddress() throws TorqueException + { + if (aAddress == null && (!ObjectUtils.equals(this.address_id, null))) + { + aAddress = AddressPeer.retrieveByPK(SimpleKey.keyFor(this.address_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + Address obj = AddressPeer.retrieveByPK(this.address_id); + obj.addContactInfos(this); + */ + } + return aAddress; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setAddressKey(ObjectKey key) throws TorqueException + { + + setAddressId(new Integer(((NumberKey) key).intValue())); + } + + + + + private Phone aPhoneRelatedByPhone; + + /** + * Declares an association between this object and a Phone object + * + * @param v Phone + * @throws TorqueException + */ + public void setPhoneRelatedByPhone(Phone v) throws TorqueException + { + if (v == null) + { + setPhone((Integer)null); + } + else + { + setPhone(v.getId()); + } + aPhoneRelatedByPhone = v; + } + + + /** + * Get the associated Phone object + * + * @return the associated Phone object + * @throws TorqueException + */ + public Phone getPhoneRelatedByPhone() throws TorqueException + { + if (aPhoneRelatedByPhone == null && (!ObjectUtils.equals(this.phone, null))) + { + aPhoneRelatedByPhone = PhonePeer.retrieveByPK(SimpleKey.keyFor(this.phone)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + Phone obj = PhonePeer.retrieveByPK(this.phone); + obj.addContactInfosRelatedByPhone(this); + */ + } + return aPhoneRelatedByPhone; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setPhoneRelatedByPhoneKey(ObjectKey key) throws TorqueException + { + + setPhone(new Integer(((NumberKey) key).intValue())); + } + + + + + private Phone aPhoneRelatedByFax; + + /** + * Declares an association between this object and a Phone object + * + * @param v Phone + * @throws TorqueException + */ + public void setPhoneRelatedByFax(Phone v) throws TorqueException + { + if (v == null) + { + setFax((Integer)null); + } + else + { + setFax(v.getId()); + } + aPhoneRelatedByFax = v; + } + + + /** + * Get the associated Phone object + * + * @return the associated Phone object + * @throws TorqueException + */ + public Phone getPhoneRelatedByFax() throws TorqueException + { + if (aPhoneRelatedByFax == null && (!ObjectUtils.equals(this.fax, null))) + { + aPhoneRelatedByFax = PhonePeer.retrieveByPK(SimpleKey.keyFor(this.fax)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + Phone obj = PhonePeer.retrieveByPK(this.fax); + obj.addContactInfosRelatedByFax(this); + */ + } + return aPhoneRelatedByFax; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setPhoneRelatedByFaxKey(ObjectKey key) throws TorqueException + { + + setFax(new Integer(((NumberKey) key).intValue())); + } + + + + /** + * Collection to store aggregation of collMembers + */ + protected List collMembers; + + /** + * Temporary storage of collMembers to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initMembers() + { + if (collMembers == null) + { + collMembers = new ArrayList(); + } + } + + /** + * Method called to associate a Member object to this object + * through the Member foreign key attribute + * + * @param l Member + * @throws TorqueException + */ + public void addMember(Member l) throws TorqueException + { + getMembers().add(l); + l.setContactInfo((ContactInfo) this); + } + + /** + * The criteria used to select the current contents of collMembers + */ + private Criteria lastMembersCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getMembers(new Criteria()) + * + * @throws TorqueException + */ + public List getMembers() throws TorqueException + { + if (collMembers == null) + { + collMembers = getMembers(new Criteria(10)); + } + return collMembers; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ContactInfo has previously + * been saved, it will retrieve related Members from storage. + * If this ContactInfo is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getMembers(Criteria criteria) throws TorqueException + { + if (collMembers == null) + { + if (isNew()) + { + collMembers = new ArrayList(); + } + else + { + criteria.add(MemberPeer.CONTACT_INFO_ID, getId() ); + collMembers = MemberPeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(MemberPeer.CONTACT_INFO_ID, getId()); + if (!lastMembersCriteria.equals(criteria)) + { + collMembers = MemberPeer.doSelect(criteria); + } + } + } + lastMembersCriteria = criteria; + + return collMembers; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getMembers(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getMembers(Connection con) throws TorqueException + { + if (collMembers == null) + { + collMembers = getMembers(new Criteria(10), con); + } + return collMembers; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ContactInfo has previously + * been saved, it will retrieve related Members from storage. + * If this ContactInfo is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getMembers(Criteria criteria, Connection con) + throws TorqueException + { + if (collMembers == null) + { + if (isNew()) + { + collMembers = new ArrayList(); + } + else + { + criteria.add(MemberPeer.CONTACT_INFO_ID, getId()); + collMembers = MemberPeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(MemberPeer.CONTACT_INFO_ID, getId()); + if (!lastMembersCriteria.equals(criteria)) + { + collMembers = MemberPeer.doSelect(criteria, con); + } + } + } + lastMembersCriteria = criteria; + + return collMembers; + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("ContactName"); + fieldNames.add("Email"); + fieldNames.add("Website"); + fieldNames.add("Phone"); + fieldNames.add("Fax"); + fieldNames.add("AddressId"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("ContactName")) + { + return getContactName(); + } + if (name.equals("Email")) + { + return getEmail(); + } + if (name.equals("Website")) + { + return getWebsite(); + } + if (name.equals("Phone")) + { + return getPhone(); + } + if (name.equals("Fax")) + { + return getFax(); + } + if (name.equals("AddressId")) + { + return getAddressId(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(ContactInfoPeer.ID)) + { + return getId(); + } + if (name.equals(ContactInfoPeer.CONTACT_NAME)) + { + return getContactName(); + } + if (name.equals(ContactInfoPeer.EMAIL)) + { + return getEmail(); + } + if (name.equals(ContactInfoPeer.WEBSITE)) + { + return getWebsite(); + } + if (name.equals(ContactInfoPeer.PHONE)) + { + return getPhone(); + } + if (name.equals(ContactInfoPeer.FAX)) + { + return getFax(); + } + if (name.equals(ContactInfoPeer.ADDRESS_ID)) + { + return getAddressId(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getContactName(); + } + if (pos == 2) + { + return getEmail(); + } + if (pos == 3) + { + return getWebsite(); + } + if (pos == 4) + { + return getPhone(); + } + if (pos == 5) + { + return getFax(); + } + if (pos == 6) + { + return getAddressId(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(ContactInfoPeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + ContactInfoPeer.doInsert((ContactInfo) this, con); + setNew(false); + } + else + { + ContactInfoPeer.doUpdate((ContactInfo) this, con); + } + } + + + + if (collMembers != null) + { + for (int i = 0; i < collMembers.size(); i++) + { + ((Member) collMembers.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public ContactInfo copy() throws TorqueException + { + return copyInto(new ContactInfo()); + } + + protected ContactInfo copyInto(ContactInfo copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setContactName(contact_name); + copyObj.setEmail(email); + copyObj.setWebsite(website); + copyObj.setPhone(phone); + copyObj.setFax(fax); + copyObj.setAddressId(address_id); + + copyObj.setNew(false); + + + List v = getMembers(); + for (int i = 0; i < v.size(); i++) + { + Member obj = (Member) v.get(i); + copyObj.addMember(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public ContactInfoPeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseContactInfoPeer.java b/src/java/org/thdl/roster/om/BaseContactInfoPeer.java new file mode 100755 index 0000000..5636265 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseContactInfoPeer.java @@ -0,0 +1,1310 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseContactInfoPeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "ContactInfo"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(ContactInfoMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the CONTACT_NAME field */ + public static final String CONTACT_NAME; + /** the column name for the EMAIL field */ + public static final String EMAIL; + /** the column name for the WEBSITE field */ + public static final String WEBSITE; + /** the column name for the PHONE field */ + public static final String PHONE; + /** the column name for the FAX field */ + public static final String FAX; + /** the column name for the ADDRESS_ID field */ + public static final String ADDRESS_ID; + + static + { + ID = "ContactInfo.ID"; + CONTACT_NAME = "ContactInfo.CONTACT_NAME"; + EMAIL = "ContactInfo.EMAIL"; + WEBSITE = "ContactInfo.WEBSITE"; + PHONE = "ContactInfo.PHONE"; + FAX = "ContactInfo.FAX"; + ADDRESS_ID = "ContactInfo.ADDRESS_ID"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(ContactInfoMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 7; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.ContactInfo"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseContactInfoPeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(CONTACT_NAME); + criteria.addSelectColumn(EMAIL); + criteria.addSelectColumn(WEBSITE); + criteria.addSelectColumn(PHONE); + criteria.addSelectColumn(FAX); + criteria.addSelectColumn(ADDRESS_ID); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ContactInfo row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + ContactInfo obj = (ContactInfo) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + ContactInfo obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setContactName(row.getValue(offset + 1).asString()); + obj.setEmail(row.getValue(offset + 2).asString()); + obj.setWebsite(row.getValue(offset + 3).asString()); + obj.setPhone(row.getValue(offset + 4).asIntegerObj()); + obj.setFax(row.getValue(offset + 5).asIntegerObj()); + obj.setAddressId(row.getValue(offset + 6).asIntegerObj()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseContactInfoPeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(ContactInfoPeer.row2Object(row, 1, + ContactInfoPeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseContactInfoPeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseContactInfoPeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(ContactInfo obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(ContactInfo obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(ContactInfo obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ContactInfo obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(ContactInfo) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(ContactInfo obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(ContactInfo) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(ContactInfo obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ContactInfo) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ContactInfo obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseContactInfoPeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( ContactInfo obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(CONTACT_NAME, obj.getContactName()); + criteria.add(EMAIL, obj.getEmail()); + criteria.add(WEBSITE, obj.getWebsite()); + criteria.add(PHONE, obj.getPhone()); + criteria.add(FAX, obj.getFax()); + criteria.add(ADDRESS_ID, obj.getAddressId()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ContactInfo retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ContactInfo retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + ContactInfo retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ContactInfo retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (ContactInfo)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + + + /** + * selects a collection of ContactInfo objects pre-filled with their + * Address objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in ContactInfoPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinAddress(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + ContactInfoPeer.addSelectColumns(c); + int offset = numColumns + 1; + AddressPeer.addSelectColumns(c); + + + c.addJoin(ContactInfoPeer.ADDRESS_ID, + AddressPeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = ContactInfoPeer.getOMClass(); + + ContactInfo obj1 = (ContactInfo) ContactInfoPeer + .row2Object(row, 1, omClass); + + + omClass = AddressPeer.getOMClass(); + Address obj2 = (Address)AddressPeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + ContactInfo temp_obj1 = (ContactInfo)results.get(j); + Address temp_obj2 = (Address)temp_obj1.getAddress(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addContactInfo(obj1); + break; + } + } + if (newObject) + { + obj2.initContactInfos(); + obj2.addContactInfo(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + + /** + * selects a collection of ContactInfo objects pre-filled with their + * Phone objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in ContactInfoPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinPhoneRelatedByPhone(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + ContactInfoPeer.addSelectColumns(c); + int offset = numColumns + 1; + PhonePeer.addSelectColumns(c); + + + c.addJoin(ContactInfoPeer.PHONE, + PhonePeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = ContactInfoPeer.getOMClass(); + + ContactInfo obj1 = (ContactInfo) ContactInfoPeer + .row2Object(row, 1, omClass); + + + omClass = PhonePeer.getOMClass(); + Phone obj2 = (Phone)PhonePeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + ContactInfo temp_obj1 = (ContactInfo)results.get(j); + Phone temp_obj2 = (Phone)temp_obj1.getPhoneRelatedByPhone(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addContactInfoRelatedByPhone(obj1); + break; + } + } + if (newObject) + { + obj2.initContactInfosRelatedByPhone(); + obj2.addContactInfoRelatedByPhone(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + + /** + * selects a collection of ContactInfo objects pre-filled with their + * Phone objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in ContactInfoPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinPhoneRelatedByFax(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + ContactInfoPeer.addSelectColumns(c); + int offset = numColumns + 1; + PhonePeer.addSelectColumns(c); + + + c.addJoin(ContactInfoPeer.FAX, + PhonePeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = ContactInfoPeer.getOMClass(); + + ContactInfo obj1 = (ContactInfo) ContactInfoPeer + .row2Object(row, 1, omClass); + + + omClass = PhonePeer.getOMClass(); + Phone obj2 = (Phone)PhonePeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + ContactInfo temp_obj1 = (ContactInfo)results.get(j); + Phone temp_obj2 = (Phone)temp_obj1.getPhoneRelatedByFax(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addContactInfoRelatedByFax(obj1); + break; + } + } + if (newObject) + { + obj2.initContactInfosRelatedByFax(); + obj2.addContactInfoRelatedByFax(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + + + + + /** + * selects a collection of ContactInfo objects pre-filled with + * all related objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in ContactInfoPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinAllExceptAddress(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to another value + // so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + addSelectColumns(c); + int offset2 = numColumns + 1; + + + PhonePeer.addSelectColumns(c); + int offset3 = offset2 + PhonePeer.numColumns; + + PhonePeer.addSelectColumns(c); + int offset4 = offset3 + PhonePeer.numColumns; + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record)rows.get(i); + + Class omClass = ContactInfoPeer.getOMClass(); + + ContactInfo obj1 = (ContactInfo)ContactInfoPeer + .row2Object(row, 1, omClass); + + + + + + + + omClass = PhonePeer.getOMClass(); + Phone obj2 = (Phone)PhonePeer + .row2Object( row, offset2, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + ContactInfo temp_obj1 = (ContactInfo)results.get(j); + Phone temp_obj2 = (Phone)temp_obj1.getPhoneRelatedByPhone(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addContactInfoRelatedByPhone(obj1); + break; + } + } + if (newObject) + { + obj2.initContactInfosRelatedByPhone(); + obj2.addContactInfoRelatedByPhone(obj1); + } + + + + + omClass = PhonePeer.getOMClass(); + Phone obj3 = (Phone)PhonePeer + .row2Object( row, offset3, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + ContactInfo temp_obj1 = (ContactInfo)results.get(j); + Phone temp_obj3 = (Phone)temp_obj1.getPhoneRelatedByFax(); + if (temp_obj3.getPrimaryKey().equals(obj3.getPrimaryKey())) + { + newObject = false; + temp_obj3.addContactInfoRelatedByFax(obj1); + break; + } + } + if (newObject) + { + obj3.initContactInfosRelatedByFax(); + obj3.addContactInfoRelatedByFax(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + /** + * selects a collection of ContactInfo objects pre-filled with + * all related objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in ContactInfoPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinAllExceptPhoneRelatedByPhone(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to another value + // so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + addSelectColumns(c); + int offset2 = numColumns + 1; + + AddressPeer.addSelectColumns(c); + int offset3 = offset2 + AddressPeer.numColumns; + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record)rows.get(i); + + Class omClass = ContactInfoPeer.getOMClass(); + + ContactInfo obj1 = (ContactInfo)ContactInfoPeer + .row2Object(row, 1, omClass); + + + + + + + omClass = AddressPeer.getOMClass(); + Address obj2 = (Address)AddressPeer + .row2Object( row, offset2, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + ContactInfo temp_obj1 = (ContactInfo)results.get(j); + Address temp_obj2 = (Address)temp_obj1.getAddress(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addContactInfo(obj1); + break; + } + } + if (newObject) + { + obj2.initContactInfos(); + obj2.addContactInfo(obj1); + } + + + results.add(obj1); + } + return results; + } + + + + + + /** + * selects a collection of ContactInfo objects pre-filled with + * all related objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in ContactInfoPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinAllExceptPhoneRelatedByFax(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to another value + // so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + addSelectColumns(c); + int offset2 = numColumns + 1; + + AddressPeer.addSelectColumns(c); + int offset3 = offset2 + AddressPeer.numColumns; + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record)rows.get(i); + + Class omClass = ContactInfoPeer.getOMClass(); + + ContactInfo obj1 = (ContactInfo)ContactInfoPeer + .row2Object(row, 1, omClass); + + + + + + + omClass = AddressPeer.getOMClass(); + Address obj2 = (Address)AddressPeer + .row2Object( row, offset2, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + ContactInfo temp_obj1 = (ContactInfo)results.get(j); + Address temp_obj2 = (Address)temp_obj1.getAddress(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addContactInfo(obj1); + break; + } + } + if (newObject) + { + obj2.initContactInfos(); + obj2.addContactInfo(obj1); + } + + + results.add(obj1); + } + return results; + } + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseCountry.java b/src/java/org/thdl/roster/om/BaseCountry.java new file mode 100755 index 0000000..7aa209f --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseCountry.java @@ -0,0 +1,553 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to Country + */ +public abstract class BaseCountry extends BaseObject +{ + /** The Peer class */ + private static final CountryPeer peer = + new CountryPeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the country field + */ + private String country; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + + // update associated Address + if (collAddresss != null) + { + for (int i = 0; i < collAddresss.size(); i++) + { + ((Address) collAddresss.get(i)) + .setCountryId(v); + } + } + } + + + /** + * Get the Country + * + * @return String + */ + public String getCountry() + { + return country; + } + + + /** + * Set the value of Country + * + * @param v new value + */ + public void setCountry(String v) + { + + + + if (!ObjectUtils.equals(this.country, v)) + { + this.country = v; + setModified(true); + } + + + } + + + + + + + /** + * Collection to store aggregation of collAddresss + */ + protected List collAddresss; + + /** + * Temporary storage of collAddresss to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initAddresss() + { + if (collAddresss == null) + { + collAddresss = new ArrayList(); + } + } + + /** + * Method called to associate a Address object to this object + * through the Address foreign key attribute + * + * @param l Address + * @throws TorqueException + */ + public void addAddress(Address l) throws TorqueException + { + getAddresss().add(l); + l.setCountry((Country) this); + } + + /** + * The criteria used to select the current contents of collAddresss + */ + private Criteria lastAddresssCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getAddresss(new Criteria()) + * + * @throws TorqueException + */ + public List getAddresss() throws TorqueException + { + if (collAddresss == null) + { + collAddresss = getAddresss(new Criteria(10)); + } + return collAddresss; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this Country has previously + * been saved, it will retrieve related Addresss from storage. + * If this Country is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getAddresss(Criteria criteria) throws TorqueException + { + if (collAddresss == null) + { + if (isNew()) + { + collAddresss = new ArrayList(); + } + else + { + criteria.add(AddressPeer.COUNTRY_ID, getId() ); + collAddresss = AddressPeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(AddressPeer.COUNTRY_ID, getId()); + if (!lastAddresssCriteria.equals(criteria)) + { + collAddresss = AddressPeer.doSelect(criteria); + } + } + } + lastAddresssCriteria = criteria; + + return collAddresss; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getAddresss(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getAddresss(Connection con) throws TorqueException + { + if (collAddresss == null) + { + collAddresss = getAddresss(new Criteria(10), con); + } + return collAddresss; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this Country has previously + * been saved, it will retrieve related Addresss from storage. + * If this Country is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getAddresss(Criteria criteria, Connection con) + throws TorqueException + { + if (collAddresss == null) + { + if (isNew()) + { + collAddresss = new ArrayList(); + } + else + { + criteria.add(AddressPeer.COUNTRY_ID, getId()); + collAddresss = AddressPeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(AddressPeer.COUNTRY_ID, getId()); + if (!lastAddresssCriteria.equals(criteria)) + { + collAddresss = AddressPeer.doSelect(criteria, con); + } + } + } + lastAddresssCriteria = criteria; + + return collAddresss; + } + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("Country"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("Country")) + { + return getCountry(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(CountryPeer.ID)) + { + return getId(); + } + if (name.equals(CountryPeer.COUNTRY)) + { + return getCountry(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getCountry(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(CountryPeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + CountryPeer.doInsert((Country) this, con); + setNew(false); + } + else + { + CountryPeer.doUpdate((Country) this, con); + } + } + + + + if (collAddresss != null) + { + for (int i = 0; i < collAddresss.size(); i++) + { + ((Address) collAddresss.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public Country copy() throws TorqueException + { + return copyInto(new Country()); + } + + protected Country copyInto(Country copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setCountry(country); + + copyObj.setNew(false); + + + List v = getAddresss(); + for (int i = 0; i < v.size(); i++) + { + Address obj = (Address) v.get(i); + copyObj.addAddress(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public CountryPeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseCountryPeer.java b/src/java/org/thdl/roster/om/BaseCountryPeer.java new file mode 100755 index 0000000..75ef06c --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseCountryPeer.java @@ -0,0 +1,778 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseCountryPeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "Country"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(CountryMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the COUNTRY field */ + public static final String COUNTRY; + + static + { + ID = "Country.ID"; + COUNTRY = "Country.COUNTRY"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(CountryMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 2; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.Country"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseCountryPeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(COUNTRY); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Country row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + Country obj = (Country) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + Country obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setCountry(row.getValue(offset + 1).asString()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseCountryPeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(CountryPeer.row2Object(row, 1, + CountryPeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseCountryPeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseCountryPeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Country obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(Country obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Country obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Country obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Country) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(Country obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(Country) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Country obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(Country) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Country obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseCountryPeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( Country obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(COUNTRY, obj.getCountry()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Country retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Country retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + Country retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Country retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (Country)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseCulturalArea.java b/src/java/org/thdl/roster/om/BaseCulturalArea.java new file mode 100755 index 0000000..f3e05aa --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseCulturalArea.java @@ -0,0 +1,561 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to CulturalArea + */ +public abstract class BaseCulturalArea extends BaseObject +{ + /** The Peer class */ + private static final CulturalAreaPeer peer = + new CulturalAreaPeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the cultural_area field + */ + private String cultural_area; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + + // update associated ResearchInterestCulturalArea + if (collResearchInterestCulturalAreas != null) + { + for (int i = 0; i < collResearchInterestCulturalAreas.size(); i++) + { + ((ResearchInterestCulturalArea) collResearchInterestCulturalAreas.get(i)) + .setCulturalAreaId(v); + } + } + } + + + /** + * Get the CulturalArea + * + * @return String + */ + public String getCulturalArea() + { + return cultural_area; + } + + + /** + * Set the value of CulturalArea + * + * @param v new value + */ + public void setCulturalArea(String v) + { + + + + if (!ObjectUtils.equals(this.cultural_area, v)) + { + this.cultural_area = v; + setModified(true); + } + + + } + + + + + + + /** + * Collection to store aggregation of collResearchInterestCulturalAreas + */ + protected List collResearchInterestCulturalAreas; + + /** + * Temporary storage of collResearchInterestCulturalAreas to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initResearchInterestCulturalAreas() + { + if (collResearchInterestCulturalAreas == null) + { + collResearchInterestCulturalAreas = new ArrayList(); + } + } + + /** + * Method called to associate a ResearchInterestCulturalArea object to this object + * through the ResearchInterestCulturalArea foreign key attribute + * + * @param l ResearchInterestCulturalArea + * @throws TorqueException + */ + public void addResearchInterestCulturalArea(ResearchInterestCulturalArea l) throws TorqueException + { + getResearchInterestCulturalAreas().add(l); + l.setCulturalArea((CulturalArea) this); + } + + /** + * The criteria used to select the current contents of collResearchInterestCulturalAreas + */ + private Criteria lastResearchInterestCulturalAreasCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getResearchInterestCulturalAreas(new Criteria()) + * + * @throws TorqueException + */ + public List getResearchInterestCulturalAreas() throws TorqueException + { + if (collResearchInterestCulturalAreas == null) + { + collResearchInterestCulturalAreas = getResearchInterestCulturalAreas(new Criteria(10)); + } + return collResearchInterestCulturalAreas; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this CulturalArea has previously + * been saved, it will retrieve related ResearchInterestCulturalAreas from storage. + * If this CulturalArea is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getResearchInterestCulturalAreas(Criteria criteria) throws TorqueException + { + if (collResearchInterestCulturalAreas == null) + { + if (isNew()) + { + collResearchInterestCulturalAreas = new ArrayList(); + } + else + { + criteria.add(ResearchInterestCulturalAreaPeer.CULTURAL_AREA_ID, getId() ); + collResearchInterestCulturalAreas = ResearchInterestCulturalAreaPeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ResearchInterestCulturalAreaPeer.CULTURAL_AREA_ID, getId()); + if (!lastResearchInterestCulturalAreasCriteria.equals(criteria)) + { + collResearchInterestCulturalAreas = ResearchInterestCulturalAreaPeer.doSelect(criteria); + } + } + } + lastResearchInterestCulturalAreasCriteria = criteria; + + return collResearchInterestCulturalAreas; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getResearchInterestCulturalAreas(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getResearchInterestCulturalAreas(Connection con) throws TorqueException + { + if (collResearchInterestCulturalAreas == null) + { + collResearchInterestCulturalAreas = getResearchInterestCulturalAreas(new Criteria(10), con); + } + return collResearchInterestCulturalAreas; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this CulturalArea has previously + * been saved, it will retrieve related ResearchInterestCulturalAreas from storage. + * If this CulturalArea is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getResearchInterestCulturalAreas(Criteria criteria, Connection con) + throws TorqueException + { + if (collResearchInterestCulturalAreas == null) + { + if (isNew()) + { + collResearchInterestCulturalAreas = new ArrayList(); + } + else + { + criteria.add(ResearchInterestCulturalAreaPeer.CULTURAL_AREA_ID, getId()); + collResearchInterestCulturalAreas = ResearchInterestCulturalAreaPeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ResearchInterestCulturalAreaPeer.CULTURAL_AREA_ID, getId()); + if (!lastResearchInterestCulturalAreasCriteria.equals(criteria)) + { + collResearchInterestCulturalAreas = ResearchInterestCulturalAreaPeer.doSelect(criteria, con); + } + } + } + lastResearchInterestCulturalAreasCriteria = criteria; + + return collResearchInterestCulturalAreas; + } + + + + + + + + + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("CulturalArea"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("CulturalArea")) + { + return getCulturalArea(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(CulturalAreaPeer.ID)) + { + return getId(); + } + if (name.equals(CulturalAreaPeer.CULTURAL_AREA)) + { + return getCulturalArea(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getCulturalArea(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(CulturalAreaPeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + CulturalAreaPeer.doInsert((CulturalArea) this, con); + setNew(false); + } + else + { + CulturalAreaPeer.doUpdate((CulturalArea) this, con); + } + } + + + + if (collResearchInterestCulturalAreas != null) + { + for (int i = 0; i < collResearchInterestCulturalAreas.size(); i++) + { + ((ResearchInterestCulturalArea) collResearchInterestCulturalAreas.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public CulturalArea copy() throws TorqueException + { + return copyInto(new CulturalArea()); + } + + protected CulturalArea copyInto(CulturalArea copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setCulturalArea(cultural_area); + + copyObj.setNew(false); + + + List v = getResearchInterestCulturalAreas(); + for (int i = 0; i < v.size(); i++) + { + ResearchInterestCulturalArea obj = (ResearchInterestCulturalArea) v.get(i); + copyObj.addResearchInterestCulturalArea(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public CulturalAreaPeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseCulturalAreaPeer.java b/src/java/org/thdl/roster/om/BaseCulturalAreaPeer.java new file mode 100755 index 0000000..10c991a --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseCulturalAreaPeer.java @@ -0,0 +1,778 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseCulturalAreaPeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "CulturalArea"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(CulturalAreaMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the CULTURAL_AREA field */ + public static final String CULTURAL_AREA; + + static + { + ID = "CulturalArea.ID"; + CULTURAL_AREA = "CulturalArea.CULTURAL_AREA"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(CulturalAreaMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 2; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.CulturalArea"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseCulturalAreaPeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(CULTURAL_AREA); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static CulturalArea row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + CulturalArea obj = (CulturalArea) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + CulturalArea obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setCulturalArea(row.getValue(offset + 1).asString()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseCulturalAreaPeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(CulturalAreaPeer.row2Object(row, 1, + CulturalAreaPeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseCulturalAreaPeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseCulturalAreaPeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(CulturalArea obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(CulturalArea obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(CulturalArea obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(CulturalArea obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(CulturalArea) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(CulturalArea obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(CulturalArea) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(CulturalArea obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(CulturalArea) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(CulturalArea obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseCulturalAreaPeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( CulturalArea obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(CULTURAL_AREA, obj.getCulturalArea()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static CulturalArea retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static CulturalArea retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + CulturalArea retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static CulturalArea retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (CulturalArea)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseDiscipline.java b/src/java/org/thdl/roster/om/BaseDiscipline.java new file mode 100755 index 0000000..585c608 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseDiscipline.java @@ -0,0 +1,561 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to Discipline + */ +public abstract class BaseDiscipline extends BaseObject +{ + /** The Peer class */ + private static final DisciplinePeer peer = + new DisciplinePeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the discipline field + */ + private String discipline; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + + // update associated ResearchInterestDiscipline + if (collResearchInterestDisciplines != null) + { + for (int i = 0; i < collResearchInterestDisciplines.size(); i++) + { + ((ResearchInterestDiscipline) collResearchInterestDisciplines.get(i)) + .setDisciplineId(v); + } + } + } + + + /** + * Get the Discipline + * + * @return String + */ + public String getDiscipline() + { + return discipline; + } + + + /** + * Set the value of Discipline + * + * @param v new value + */ + public void setDiscipline(String v) + { + + + + if (!ObjectUtils.equals(this.discipline, v)) + { + this.discipline = v; + setModified(true); + } + + + } + + + + + + + /** + * Collection to store aggregation of collResearchInterestDisciplines + */ + protected List collResearchInterestDisciplines; + + /** + * Temporary storage of collResearchInterestDisciplines to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initResearchInterestDisciplines() + { + if (collResearchInterestDisciplines == null) + { + collResearchInterestDisciplines = new ArrayList(); + } + } + + /** + * Method called to associate a ResearchInterestDiscipline object to this object + * through the ResearchInterestDiscipline foreign key attribute + * + * @param l ResearchInterestDiscipline + * @throws TorqueException + */ + public void addResearchInterestDiscipline(ResearchInterestDiscipline l) throws TorqueException + { + getResearchInterestDisciplines().add(l); + l.setDiscipline((Discipline) this); + } + + /** + * The criteria used to select the current contents of collResearchInterestDisciplines + */ + private Criteria lastResearchInterestDisciplinesCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getResearchInterestDisciplines(new Criteria()) + * + * @throws TorqueException + */ + public List getResearchInterestDisciplines() throws TorqueException + { + if (collResearchInterestDisciplines == null) + { + collResearchInterestDisciplines = getResearchInterestDisciplines(new Criteria(10)); + } + return collResearchInterestDisciplines; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this Discipline has previously + * been saved, it will retrieve related ResearchInterestDisciplines from storage. + * If this Discipline is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getResearchInterestDisciplines(Criteria criteria) throws TorqueException + { + if (collResearchInterestDisciplines == null) + { + if (isNew()) + { + collResearchInterestDisciplines = new ArrayList(); + } + else + { + criteria.add(ResearchInterestDisciplinePeer.DISCIPLINE_ID, getId() ); + collResearchInterestDisciplines = ResearchInterestDisciplinePeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ResearchInterestDisciplinePeer.DISCIPLINE_ID, getId()); + if (!lastResearchInterestDisciplinesCriteria.equals(criteria)) + { + collResearchInterestDisciplines = ResearchInterestDisciplinePeer.doSelect(criteria); + } + } + } + lastResearchInterestDisciplinesCriteria = criteria; + + return collResearchInterestDisciplines; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getResearchInterestDisciplines(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getResearchInterestDisciplines(Connection con) throws TorqueException + { + if (collResearchInterestDisciplines == null) + { + collResearchInterestDisciplines = getResearchInterestDisciplines(new Criteria(10), con); + } + return collResearchInterestDisciplines; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this Discipline has previously + * been saved, it will retrieve related ResearchInterestDisciplines from storage. + * If this Discipline is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getResearchInterestDisciplines(Criteria criteria, Connection con) + throws TorqueException + { + if (collResearchInterestDisciplines == null) + { + if (isNew()) + { + collResearchInterestDisciplines = new ArrayList(); + } + else + { + criteria.add(ResearchInterestDisciplinePeer.DISCIPLINE_ID, getId()); + collResearchInterestDisciplines = ResearchInterestDisciplinePeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ResearchInterestDisciplinePeer.DISCIPLINE_ID, getId()); + if (!lastResearchInterestDisciplinesCriteria.equals(criteria)) + { + collResearchInterestDisciplines = ResearchInterestDisciplinePeer.doSelect(criteria, con); + } + } + } + lastResearchInterestDisciplinesCriteria = criteria; + + return collResearchInterestDisciplines; + } + + + + + + + + + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("Discipline"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("Discipline")) + { + return getDiscipline(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(DisciplinePeer.ID)) + { + return getId(); + } + if (name.equals(DisciplinePeer.DISCIPLINE)) + { + return getDiscipline(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getDiscipline(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(DisciplinePeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + DisciplinePeer.doInsert((Discipline) this, con); + setNew(false); + } + else + { + DisciplinePeer.doUpdate((Discipline) this, con); + } + } + + + + if (collResearchInterestDisciplines != null) + { + for (int i = 0; i < collResearchInterestDisciplines.size(); i++) + { + ((ResearchInterestDiscipline) collResearchInterestDisciplines.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public Discipline copy() throws TorqueException + { + return copyInto(new Discipline()); + } + + protected Discipline copyInto(Discipline copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setDiscipline(discipline); + + copyObj.setNew(false); + + + List v = getResearchInterestDisciplines(); + for (int i = 0; i < v.size(); i++) + { + ResearchInterestDiscipline obj = (ResearchInterestDiscipline) v.get(i); + copyObj.addResearchInterestDiscipline(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public DisciplinePeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseDisciplinePeer.java b/src/java/org/thdl/roster/om/BaseDisciplinePeer.java new file mode 100755 index 0000000..9f11392 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseDisciplinePeer.java @@ -0,0 +1,778 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseDisciplinePeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "Discipline"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(DisciplineMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the DISCIPLINE field */ + public static final String DISCIPLINE; + + static + { + ID = "Discipline.ID"; + DISCIPLINE = "Discipline.DISCIPLINE"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(DisciplineMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 2; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.Discipline"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseDisciplinePeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(DISCIPLINE); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Discipline row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + Discipline obj = (Discipline) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + Discipline obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setDiscipline(row.getValue(offset + 1).asString()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseDisciplinePeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(DisciplinePeer.row2Object(row, 1, + DisciplinePeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseDisciplinePeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseDisciplinePeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Discipline obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(Discipline obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Discipline obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Discipline obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Discipline) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(Discipline obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(Discipline) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Discipline obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(Discipline) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Discipline obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseDisciplinePeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( Discipline obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(DISCIPLINE, obj.getDiscipline()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Discipline retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Discipline retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + Discipline retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Discipline retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (Discipline)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseDocument.java b/src/java/org/thdl/roster/om/BaseDocument.java new file mode 100755 index 0000000..06c6735 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseDocument.java @@ -0,0 +1,734 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to Document + */ +public abstract class BaseDocument extends BaseObject +{ + /** The Peer class */ + private static final DocumentPeer peer = + new DocumentPeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the member_id field + */ + private Integer member_id; + + /** + * The value for the document_type_id field + */ + private Integer document_type_id; + + /** + * The value for the content_type field + */ + private String content_type; + + /** + * The value for the path field + */ + private String path; + + /** + * The value for the filename field + */ + private String filename; + + /** + * The value for the label field + */ + private String label; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + } + + + /** + * Get the MemberId + * + * @return Integer + */ + public Integer getMemberId() + { + return member_id; + } + + + /** + * Set the value of MemberId + * + * @param v new value + */ + public void setMemberId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.member_id, v)) + { + this.member_id = v; + setModified(true); + } + + + if (aMember != null && !ObjectUtils.equals(aMember.getId(), v)) + { + aMember = null; + } + + } + + + /** + * Get the DocumentTypeId + * + * @return Integer + */ + public Integer getDocumentTypeId() + { + return document_type_id; + } + + + /** + * Set the value of DocumentTypeId + * + * @param v new value + */ + public void setDocumentTypeId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.document_type_id, v)) + { + this.document_type_id = v; + setModified(true); + } + + + if (aDocumentType != null && !ObjectUtils.equals(aDocumentType.getId(), v)) + { + aDocumentType = null; + } + + } + + + /** + * Get the ContentType + * + * @return String + */ + public String getContentType() + { + return content_type; + } + + + /** + * Set the value of ContentType + * + * @param v new value + */ + public void setContentType(String v) + { + + + + if (!ObjectUtils.equals(this.content_type, v)) + { + this.content_type = v; + setModified(true); + } + + + } + + + /** + * Get the Path + * + * @return String + */ + public String getPath() + { + return path; + } + + + /** + * Set the value of Path + * + * @param v new value + */ + public void setPath(String v) + { + + + + if (!ObjectUtils.equals(this.path, v)) + { + this.path = v; + setModified(true); + } + + + } + + + /** + * Get the Filename + * + * @return String + */ + public String getFilename() + { + return filename; + } + + + /** + * Set the value of Filename + * + * @param v new value + */ + public void setFilename(String v) + { + + + + if (!ObjectUtils.equals(this.filename, v)) + { + this.filename = v; + setModified(true); + } + + + } + + + /** + * Get the Label + * + * @return String + */ + public String getLabel() + { + return label; + } + + + /** + * Set the value of Label + * + * @param v new value + */ + public void setLabel(String v) + { + + + + if (!ObjectUtils.equals(this.label, v)) + { + this.label = v; + setModified(true); + } + + + } + + + + + + + + private Member aMember; + + /** + * Declares an association between this object and a Member object + * + * @param v Member + * @throws TorqueException + */ + public void setMember(Member v) throws TorqueException + { + if (v == null) + { + setMemberId((Integer)null); + } + else + { + setMemberId(v.getId()); + } + aMember = v; + } + + + /** + * Get the associated Member object + * + * @return the associated Member object + * @throws TorqueException + */ + public Member getMember() throws TorqueException + { + if (aMember == null && (!ObjectUtils.equals(this.member_id, null))) + { + aMember = MemberPeer.retrieveByPK(SimpleKey.keyFor(this.member_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + Member obj = MemberPeer.retrieveByPK(this.member_id); + obj.addDocuments(this); + */ + } + return aMember; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setMemberKey(ObjectKey key) throws TorqueException + { + + setMemberId(new Integer(((NumberKey) key).intValue())); + } + + + + + private DocumentType aDocumentType; + + /** + * Declares an association between this object and a DocumentType object + * + * @param v DocumentType + * @throws TorqueException + */ + public void setDocumentType(DocumentType v) throws TorqueException + { + if (v == null) + { + setDocumentTypeId((Integer)null); + } + else + { + setDocumentTypeId(v.getId()); + } + aDocumentType = v; + } + + + /** + * Get the associated DocumentType object + * + * @return the associated DocumentType object + * @throws TorqueException + */ + public DocumentType getDocumentType() throws TorqueException + { + if (aDocumentType == null && (!ObjectUtils.equals(this.document_type_id, null))) + { + aDocumentType = DocumentTypePeer.retrieveByPK(SimpleKey.keyFor(this.document_type_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + DocumentType obj = DocumentTypePeer.retrieveByPK(this.document_type_id); + obj.addDocuments(this); + */ + } + return aDocumentType; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setDocumentTypeKey(ObjectKey key) throws TorqueException + { + + setDocumentTypeId(new Integer(((NumberKey) key).intValue())); + } + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("MemberId"); + fieldNames.add("DocumentTypeId"); + fieldNames.add("ContentType"); + fieldNames.add("Path"); + fieldNames.add("Filename"); + fieldNames.add("Label"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("MemberId")) + { + return getMemberId(); + } + if (name.equals("DocumentTypeId")) + { + return getDocumentTypeId(); + } + if (name.equals("ContentType")) + { + return getContentType(); + } + if (name.equals("Path")) + { + return getPath(); + } + if (name.equals("Filename")) + { + return getFilename(); + } + if (name.equals("Label")) + { + return getLabel(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(DocumentPeer.ID)) + { + return getId(); + } + if (name.equals(DocumentPeer.MEMBER_ID)) + { + return getMemberId(); + } + if (name.equals(DocumentPeer.DOCUMENT_TYPE_ID)) + { + return getDocumentTypeId(); + } + if (name.equals(DocumentPeer.CONTENT_TYPE)) + { + return getContentType(); + } + if (name.equals(DocumentPeer.PATH)) + { + return getPath(); + } + if (name.equals(DocumentPeer.FILENAME)) + { + return getFilename(); + } + if (name.equals(DocumentPeer.LABEL)) + { + return getLabel(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getMemberId(); + } + if (pos == 2) + { + return getDocumentTypeId(); + } + if (pos == 3) + { + return getContentType(); + } + if (pos == 4) + { + return getPath(); + } + if (pos == 5) + { + return getFilename(); + } + if (pos == 6) + { + return getLabel(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(DocumentPeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + DocumentPeer.doInsert((Document) this, con); + setNew(false); + } + else + { + DocumentPeer.doUpdate((Document) this, con); + } + } + + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public Document copy() throws TorqueException + { + return copyInto(new Document()); + } + + protected Document copyInto(Document copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setMemberId(member_id); + copyObj.setDocumentTypeId(document_type_id); + copyObj.setContentType(content_type); + copyObj.setPath(path); + copyObj.setFilename(filename); + copyObj.setLabel(label); + + copyObj.setNew(false); + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public DocumentPeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseDocumentPeer.java b/src/java/org/thdl/roster/om/BaseDocumentPeer.java new file mode 100755 index 0000000..70ac201 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseDocumentPeer.java @@ -0,0 +1,964 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseDocumentPeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "Document"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(DocumentMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the MEMBER_ID field */ + public static final String MEMBER_ID; + /** the column name for the DOCUMENT_TYPE_ID field */ + public static final String DOCUMENT_TYPE_ID; + /** the column name for the CONTENT_TYPE field */ + public static final String CONTENT_TYPE; + /** the column name for the PATH field */ + public static final String PATH; + /** the column name for the FILENAME field */ + public static final String FILENAME; + /** the column name for the LABEL field */ + public static final String LABEL; + + static + { + ID = "Document.ID"; + MEMBER_ID = "Document.MEMBER_ID"; + DOCUMENT_TYPE_ID = "Document.DOCUMENT_TYPE_ID"; + CONTENT_TYPE = "Document.CONTENT_TYPE"; + PATH = "Document.PATH"; + FILENAME = "Document.FILENAME"; + LABEL = "Document.LABEL"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(DocumentMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 7; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.Document"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseDocumentPeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(MEMBER_ID); + criteria.addSelectColumn(DOCUMENT_TYPE_ID); + criteria.addSelectColumn(CONTENT_TYPE); + criteria.addSelectColumn(PATH); + criteria.addSelectColumn(FILENAME); + criteria.addSelectColumn(LABEL); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Document row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + Document obj = (Document) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + Document obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setMemberId(row.getValue(offset + 1).asIntegerObj()); + obj.setDocumentTypeId(row.getValue(offset + 2).asIntegerObj()); + obj.setContentType(row.getValue(offset + 3).asString()); + obj.setPath(row.getValue(offset + 4).asString()); + obj.setFilename(row.getValue(offset + 5).asString()); + obj.setLabel(row.getValue(offset + 6).asString()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseDocumentPeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(DocumentPeer.row2Object(row, 1, + DocumentPeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseDocumentPeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseDocumentPeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Document obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(Document obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Document obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Document obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Document) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(Document obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(Document) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Document obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(Document) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Document obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseDocumentPeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( Document obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(MEMBER_ID, obj.getMemberId()); + criteria.add(DOCUMENT_TYPE_ID, obj.getDocumentTypeId()); + criteria.add(CONTENT_TYPE, obj.getContentType()); + criteria.add(PATH, obj.getPath()); + criteria.add(FILENAME, obj.getFilename()); + criteria.add(LABEL, obj.getLabel()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Document retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Document retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + Document retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Document retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (Document)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + + + /** + * selects a collection of Document objects pre-filled with their + * Member objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in DocumentPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinMember(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + DocumentPeer.addSelectColumns(c); + int offset = numColumns + 1; + MemberPeer.addSelectColumns(c); + + + c.addJoin(DocumentPeer.MEMBER_ID, + MemberPeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = DocumentPeer.getOMClass(); + + Document obj1 = (Document) DocumentPeer + .row2Object(row, 1, omClass); + + + omClass = MemberPeer.getOMClass(row, offset); + Member obj2 = (Member)MemberPeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + Document temp_obj1 = (Document)results.get(j); + Member temp_obj2 = (Member)temp_obj1.getMember(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addDocument(obj1); + break; + } + } + if (newObject) + { + obj2.initDocuments(); + obj2.addDocument(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + + /** + * selects a collection of Document objects pre-filled with their + * DocumentType objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in DocumentPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinDocumentType(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + DocumentPeer.addSelectColumns(c); + int offset = numColumns + 1; + DocumentTypePeer.addSelectColumns(c); + + + c.addJoin(DocumentPeer.DOCUMENT_TYPE_ID, + DocumentTypePeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = DocumentPeer.getOMClass(); + + Document obj1 = (Document) DocumentPeer + .row2Object(row, 1, omClass); + + + omClass = DocumentTypePeer.getOMClass(); + DocumentType obj2 = (DocumentType)DocumentTypePeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + Document temp_obj1 = (Document)results.get(j); + DocumentType temp_obj2 = (DocumentType)temp_obj1.getDocumentType(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addDocument(obj1); + break; + } + } + if (newObject) + { + obj2.initDocuments(); + obj2.addDocument(obj1); + } + results.add(obj1); + } + return results; + } + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseDocumentType.java b/src/java/org/thdl/roster/om/BaseDocumentType.java new file mode 100755 index 0000000..4ffbbf5 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseDocumentType.java @@ -0,0 +1,561 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to DocumentType + */ +public abstract class BaseDocumentType extends BaseObject +{ + /** The Peer class */ + private static final DocumentTypePeer peer = + new DocumentTypePeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the document_type field + */ + private String document_type; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + + // update associated Document + if (collDocuments != null) + { + for (int i = 0; i < collDocuments.size(); i++) + { + ((Document) collDocuments.get(i)) + .setDocumentTypeId(v); + } + } + } + + + /** + * Get the DocumentType + * + * @return String + */ + public String getDocumentType() + { + return document_type; + } + + + /** + * Set the value of DocumentType + * + * @param v new value + */ + public void setDocumentType(String v) + { + + + + if (!ObjectUtils.equals(this.document_type, v)) + { + this.document_type = v; + setModified(true); + } + + + } + + + + + + + /** + * Collection to store aggregation of collDocuments + */ + protected List collDocuments; + + /** + * Temporary storage of collDocuments to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initDocuments() + { + if (collDocuments == null) + { + collDocuments = new ArrayList(); + } + } + + /** + * Method called to associate a Document object to this object + * through the Document foreign key attribute + * + * @param l Document + * @throws TorqueException + */ + public void addDocument(Document l) throws TorqueException + { + getDocuments().add(l); + l.setDocumentType((DocumentType) this); + } + + /** + * The criteria used to select the current contents of collDocuments + */ + private Criteria lastDocumentsCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getDocuments(new Criteria()) + * + * @throws TorqueException + */ + public List getDocuments() throws TorqueException + { + if (collDocuments == null) + { + collDocuments = getDocuments(new Criteria(10)); + } + return collDocuments; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this DocumentType has previously + * been saved, it will retrieve related Documents from storage. + * If this DocumentType is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getDocuments(Criteria criteria) throws TorqueException + { + if (collDocuments == null) + { + if (isNew()) + { + collDocuments = new ArrayList(); + } + else + { + criteria.add(DocumentPeer.DOCUMENT_TYPE_ID, getId() ); + collDocuments = DocumentPeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(DocumentPeer.DOCUMENT_TYPE_ID, getId()); + if (!lastDocumentsCriteria.equals(criteria)) + { + collDocuments = DocumentPeer.doSelect(criteria); + } + } + } + lastDocumentsCriteria = criteria; + + return collDocuments; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getDocuments(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getDocuments(Connection con) throws TorqueException + { + if (collDocuments == null) + { + collDocuments = getDocuments(new Criteria(10), con); + } + return collDocuments; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this DocumentType has previously + * been saved, it will retrieve related Documents from storage. + * If this DocumentType is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getDocuments(Criteria criteria, Connection con) + throws TorqueException + { + if (collDocuments == null) + { + if (isNew()) + { + collDocuments = new ArrayList(); + } + else + { + criteria.add(DocumentPeer.DOCUMENT_TYPE_ID, getId()); + collDocuments = DocumentPeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(DocumentPeer.DOCUMENT_TYPE_ID, getId()); + if (!lastDocumentsCriteria.equals(criteria)) + { + collDocuments = DocumentPeer.doSelect(criteria, con); + } + } + } + lastDocumentsCriteria = criteria; + + return collDocuments; + } + + + + + + + + + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("DocumentType"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("DocumentType")) + { + return getDocumentType(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(DocumentTypePeer.ID)) + { + return getId(); + } + if (name.equals(DocumentTypePeer.DOCUMENT_TYPE)) + { + return getDocumentType(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getDocumentType(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(DocumentTypePeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + DocumentTypePeer.doInsert((DocumentType) this, con); + setNew(false); + } + else + { + DocumentTypePeer.doUpdate((DocumentType) this, con); + } + } + + + + if (collDocuments != null) + { + for (int i = 0; i < collDocuments.size(); i++) + { + ((Document) collDocuments.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public DocumentType copy() throws TorqueException + { + return copyInto(new DocumentType()); + } + + protected DocumentType copyInto(DocumentType copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setDocumentType(document_type); + + copyObj.setNew(false); + + + List v = getDocuments(); + for (int i = 0; i < v.size(); i++) + { + Document obj = (Document) v.get(i); + copyObj.addDocument(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public DocumentTypePeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseDocumentTypePeer.java b/src/java/org/thdl/roster/om/BaseDocumentTypePeer.java new file mode 100755 index 0000000..84c2ca0 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseDocumentTypePeer.java @@ -0,0 +1,778 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseDocumentTypePeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "DocumentType"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(DocumentTypeMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the DOCUMENT_TYPE field */ + public static final String DOCUMENT_TYPE; + + static + { + ID = "DocumentType.ID"; + DOCUMENT_TYPE = "DocumentType.DOCUMENT_TYPE"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(DocumentTypeMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 2; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.DocumentType"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseDocumentTypePeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(DOCUMENT_TYPE); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static DocumentType row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + DocumentType obj = (DocumentType) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + DocumentType obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setDocumentType(row.getValue(offset + 1).asString()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseDocumentTypePeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(DocumentTypePeer.row2Object(row, 1, + DocumentTypePeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseDocumentTypePeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseDocumentTypePeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(DocumentType obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(DocumentType obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(DocumentType obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(DocumentType obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(DocumentType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(DocumentType obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(DocumentType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(DocumentType obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(DocumentType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(DocumentType obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseDocumentTypePeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( DocumentType obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(DOCUMENT_TYPE, obj.getDocumentType()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static DocumentType retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static DocumentType retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + DocumentType retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static DocumentType retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (DocumentType)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseLanguage.java b/src/java/org/thdl/roster/om/BaseLanguage.java new file mode 100755 index 0000000..cd10562 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseLanguage.java @@ -0,0 +1,561 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to Language + */ +public abstract class BaseLanguage extends BaseObject +{ + /** The Peer class */ + private static final LanguagePeer peer = + new LanguagePeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the language field + */ + private String language; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + + // update associated ResearchInterestLanguage + if (collResearchInterestLanguages != null) + { + for (int i = 0; i < collResearchInterestLanguages.size(); i++) + { + ((ResearchInterestLanguage) collResearchInterestLanguages.get(i)) + .setLanguageId(v); + } + } + } + + + /** + * Get the Language + * + * @return String + */ + public String getLanguage() + { + return language; + } + + + /** + * Set the value of Language + * + * @param v new value + */ + public void setLanguage(String v) + { + + + + if (!ObjectUtils.equals(this.language, v)) + { + this.language = v; + setModified(true); + } + + + } + + + + + + + /** + * Collection to store aggregation of collResearchInterestLanguages + */ + protected List collResearchInterestLanguages; + + /** + * Temporary storage of collResearchInterestLanguages to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initResearchInterestLanguages() + { + if (collResearchInterestLanguages == null) + { + collResearchInterestLanguages = new ArrayList(); + } + } + + /** + * Method called to associate a ResearchInterestLanguage object to this object + * through the ResearchInterestLanguage foreign key attribute + * + * @param l ResearchInterestLanguage + * @throws TorqueException + */ + public void addResearchInterestLanguage(ResearchInterestLanguage l) throws TorqueException + { + getResearchInterestLanguages().add(l); + l.setLanguage((Language) this); + } + + /** + * The criteria used to select the current contents of collResearchInterestLanguages + */ + private Criteria lastResearchInterestLanguagesCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getResearchInterestLanguages(new Criteria()) + * + * @throws TorqueException + */ + public List getResearchInterestLanguages() throws TorqueException + { + if (collResearchInterestLanguages == null) + { + collResearchInterestLanguages = getResearchInterestLanguages(new Criteria(10)); + } + return collResearchInterestLanguages; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this Language has previously + * been saved, it will retrieve related ResearchInterestLanguages from storage. + * If this Language is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getResearchInterestLanguages(Criteria criteria) throws TorqueException + { + if (collResearchInterestLanguages == null) + { + if (isNew()) + { + collResearchInterestLanguages = new ArrayList(); + } + else + { + criteria.add(ResearchInterestLanguagePeer.LANGUAGE_ID, getId() ); + collResearchInterestLanguages = ResearchInterestLanguagePeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ResearchInterestLanguagePeer.LANGUAGE_ID, getId()); + if (!lastResearchInterestLanguagesCriteria.equals(criteria)) + { + collResearchInterestLanguages = ResearchInterestLanguagePeer.doSelect(criteria); + } + } + } + lastResearchInterestLanguagesCriteria = criteria; + + return collResearchInterestLanguages; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getResearchInterestLanguages(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getResearchInterestLanguages(Connection con) throws TorqueException + { + if (collResearchInterestLanguages == null) + { + collResearchInterestLanguages = getResearchInterestLanguages(new Criteria(10), con); + } + return collResearchInterestLanguages; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this Language has previously + * been saved, it will retrieve related ResearchInterestLanguages from storage. + * If this Language is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getResearchInterestLanguages(Criteria criteria, Connection con) + throws TorqueException + { + if (collResearchInterestLanguages == null) + { + if (isNew()) + { + collResearchInterestLanguages = new ArrayList(); + } + else + { + criteria.add(ResearchInterestLanguagePeer.LANGUAGE_ID, getId()); + collResearchInterestLanguages = ResearchInterestLanguagePeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ResearchInterestLanguagePeer.LANGUAGE_ID, getId()); + if (!lastResearchInterestLanguagesCriteria.equals(criteria)) + { + collResearchInterestLanguages = ResearchInterestLanguagePeer.doSelect(criteria, con); + } + } + } + lastResearchInterestLanguagesCriteria = criteria; + + return collResearchInterestLanguages; + } + + + + + + + + + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("Language"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("Language")) + { + return getLanguage(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(LanguagePeer.ID)) + { + return getId(); + } + if (name.equals(LanguagePeer.LANGUAGE)) + { + return getLanguage(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getLanguage(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(LanguagePeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + LanguagePeer.doInsert((Language) this, con); + setNew(false); + } + else + { + LanguagePeer.doUpdate((Language) this, con); + } + } + + + + if (collResearchInterestLanguages != null) + { + for (int i = 0; i < collResearchInterestLanguages.size(); i++) + { + ((ResearchInterestLanguage) collResearchInterestLanguages.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public Language copy() throws TorqueException + { + return copyInto(new Language()); + } + + protected Language copyInto(Language copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setLanguage(language); + + copyObj.setNew(false); + + + List v = getResearchInterestLanguages(); + for (int i = 0; i < v.size(); i++) + { + ResearchInterestLanguage obj = (ResearchInterestLanguage) v.get(i); + copyObj.addResearchInterestLanguage(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public LanguagePeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseLanguagePeer.java b/src/java/org/thdl/roster/om/BaseLanguagePeer.java new file mode 100755 index 0000000..dbbe50f --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseLanguagePeer.java @@ -0,0 +1,778 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseLanguagePeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "Language"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(LanguageMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the LANGUAGE field */ + public static final String LANGUAGE; + + static + { + ID = "Language.ID"; + LANGUAGE = "Language.LANGUAGE"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(LanguageMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 2; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.Language"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseLanguagePeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(LANGUAGE); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Language row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + Language obj = (Language) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + Language obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setLanguage(row.getValue(offset + 1).asString()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseLanguagePeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(LanguagePeer.row2Object(row, 1, + LanguagePeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseLanguagePeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseLanguagePeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Language obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(Language obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Language obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Language obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Language) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(Language obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(Language) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Language obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(Language) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Language obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseLanguagePeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( Language obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(LANGUAGE, obj.getLanguage()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Language retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Language retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + Language retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Language retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (Language)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseMember.java b/src/java/org/thdl/roster/om/BaseMember.java new file mode 100755 index 0000000..b09dbde --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseMember.java @@ -0,0 +1,1519 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + + + + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to Member + */ +public abstract class BaseMember extends BaseObject +{ + /** The Peer class */ + private static final MemberPeer peer = + new MemberPeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the created_by field + */ + private Integer created_by; + + /** + * The value for the modified_by field + */ + private Integer modified_by; + + /** + * The value for the created_on field + */ + private Date created_on; + + /** + * The value for the modified_on field + */ + private Date modified_on; + + /** + * The value for the deleted field + */ + private String deleted; + + /** + * The value for the contact_info_id field + */ + private Integer contact_info_id; + + /** + * The value for the research_interest_id field + */ + private Integer research_interest_id; + + /** + * The value for the publication_id field + */ + private Integer publication_id; + + /** + * The value for the member_type field + */ + private String member_type; + + /** + * The value for the person_data_id field + */ + private Integer person_data_id; + + /** + * The value for the project_data_id field + */ + private Integer project_data_id; + + /** + * The value for the organization_data_id field + */ + private Integer organization_data_id; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + + // update associated Document + if (collDocuments != null) + { + for (int i = 0; i < collDocuments.size(); i++) + { + ((Document) collDocuments.get(i)) + .setMemberId(v); + } + } + } + + + /** + * Get the CreatedBy + * + * @return Integer + */ + public Integer getCreatedBy() + { + return created_by; + } + + + /** + * Set the value of CreatedBy + * + * @param v new value + */ + public void setCreatedBy(Integer v) + { + + + + if (!ObjectUtils.equals(this.created_by, v)) + { + this.created_by = v; + setModified(true); + } + + + } + + + /** + * Get the ModifiedBy + * + * @return Integer + */ + public Integer getModifiedBy() + { + return modified_by; + } + + + /** + * Set the value of ModifiedBy + * + * @param v new value + */ + public void setModifiedBy(Integer v) + { + + + + if (!ObjectUtils.equals(this.modified_by, v)) + { + this.modified_by = v; + setModified(true); + } + + + } + + + /** + * Get the CreatedOn + * + * @return Date + */ + public Date getCreatedOn() + { + return created_on; + } + + + /** + * Set the value of CreatedOn + * + * @param v new value + */ + public void setCreatedOn(Date v) + { + + + + if (!ObjectUtils.equals(this.created_on, v)) + { + this.created_on = v; + setModified(true); + } + + + } + + + /** + * Get the ModifiedOn + * + * @return Date + */ + public Date getModifiedOn() + { + return modified_on; + } + + + /** + * Set the value of ModifiedOn + * + * @param v new value + */ + public void setModifiedOn(Date v) + { + + + + if (!ObjectUtils.equals(this.modified_on, v)) + { + this.modified_on = v; + setModified(true); + } + + + } + + + /** + * Get the Deleted + * + * @return String + */ + public String getDeleted() + { + return deleted; + } + + + /** + * Set the value of Deleted + * + * @param v new value + */ + public void setDeleted(String v) + { + + + + if (!ObjectUtils.equals(this.deleted, v)) + { + this.deleted = v; + setModified(true); + } + + + } + + + /** + * Get the ContactInfoId + * + * @return Integer + */ + public Integer getContactInfoId() + { + return contact_info_id; + } + + + /** + * Set the value of ContactInfoId + * + * @param v new value + */ + public void setContactInfoId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.contact_info_id, v)) + { + this.contact_info_id = v; + setModified(true); + } + + + if (aContactInfo != null && !ObjectUtils.equals(aContactInfo.getId(), v)) + { + aContactInfo = null; + } + + } + + + /** + * Get the ResearchInterestId + * + * @return Integer + */ + public Integer getResearchInterestId() + { + return research_interest_id; + } + + + /** + * Set the value of ResearchInterestId + * + * @param v new value + */ + public void setResearchInterestId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.research_interest_id, v)) + { + this.research_interest_id = v; + setModified(true); + } + + + if (aResearchInterest != null && !ObjectUtils.equals(aResearchInterest.getId(), v)) + { + aResearchInterest = null; + } + + } + + + /** + * Get the PublicationId + * + * @return Integer + */ + public Integer getPublicationId() + { + return publication_id; + } + + + /** + * Set the value of PublicationId + * + * @param v new value + */ + public void setPublicationId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.publication_id, v)) + { + this.publication_id = v; + setModified(true); + } + + + if (aPublication != null && !ObjectUtils.equals(aPublication.getId(), v)) + { + aPublication = null; + } + + } + + + /** + * Get the MemberType + * + * @return String + */ + public String getMemberType() + { + return member_type; + } + + + /** + * Set the value of MemberType + * + * @param v new value + */ + public void setMemberType(String v) + { + + + + if (!ObjectUtils.equals(this.member_type, v)) + { + this.member_type = v; + setModified(true); + } + + + } + + + /** + * Get the PersonDataId + * + * @return Integer + */ + public Integer getPersonDataId() + { + return person_data_id; + } + + + /** + * Set the value of PersonDataId + * + * @param v new value + */ + public void setPersonDataId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.person_data_id, v)) + { + this.person_data_id = v; + setModified(true); + } + + + if (aPersonData != null && !ObjectUtils.equals(aPersonData.getId(), v)) + { + aPersonData = null; + } + + } + + + /** + * Get the ProjectDataId + * + * @return Integer + */ + public Integer getProjectDataId() + { + return project_data_id; + } + + + /** + * Set the value of ProjectDataId + * + * @param v new value + */ + public void setProjectDataId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.project_data_id, v)) + { + this.project_data_id = v; + setModified(true); + } + + + if (aProjectData != null && !ObjectUtils.equals(aProjectData.getId(), v)) + { + aProjectData = null; + } + + } + + + /** + * Get the OrganizationDataId + * + * @return Integer + */ + public Integer getOrganizationDataId() + { + return organization_data_id; + } + + + /** + * Set the value of OrganizationDataId + * + * @param v new value + */ + public void setOrganizationDataId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.organization_data_id, v)) + { + this.organization_data_id = v; + setModified(true); + } + + + if (aOrganizationData != null && !ObjectUtils.equals(aOrganizationData.getId(), v)) + { + aOrganizationData = null; + } + + } + + + + + + + + private ContactInfo aContactInfo; + + /** + * Declares an association between this object and a ContactInfo object + * + * @param v ContactInfo + * @throws TorqueException + */ + public void setContactInfo(ContactInfo v) throws TorqueException + { + if (v == null) + { + setContactInfoId((Integer)null); + } + else + { + setContactInfoId(v.getId()); + } + aContactInfo = v; + } + + + /** + * Get the associated ContactInfo object + * + * @return the associated ContactInfo object + * @throws TorqueException + */ + public ContactInfo getContactInfo() throws TorqueException + { + if (aContactInfo == null && (!ObjectUtils.equals(this.contact_info_id, null))) + { + aContactInfo = ContactInfoPeer.retrieveByPK(SimpleKey.keyFor(this.contact_info_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + ContactInfo obj = ContactInfoPeer.retrieveByPK(this.contact_info_id); + obj.addMembers(this); + */ + } + return aContactInfo; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setContactInfoKey(ObjectKey key) throws TorqueException + { + + setContactInfoId(new Integer(((NumberKey) key).intValue())); + } + + + + + private ResearchInterest aResearchInterest; + + /** + * Declares an association between this object and a ResearchInterest object + * + * @param v ResearchInterest + * @throws TorqueException + */ + public void setResearchInterest(ResearchInterest v) throws TorqueException + { + if (v == null) + { + setResearchInterestId((Integer)null); + } + else + { + setResearchInterestId(v.getId()); + } + aResearchInterest = v; + } + + + /** + * Get the associated ResearchInterest object + * + * @return the associated ResearchInterest object + * @throws TorqueException + */ + public ResearchInterest getResearchInterest() throws TorqueException + { + if (aResearchInterest == null && (!ObjectUtils.equals(this.research_interest_id, null))) + { + aResearchInterest = ResearchInterestPeer.retrieveByPK(SimpleKey.keyFor(this.research_interest_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + ResearchInterest obj = ResearchInterestPeer.retrieveByPK(this.research_interest_id); + obj.addMembers(this); + */ + } + return aResearchInterest; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setResearchInterestKey(ObjectKey key) throws TorqueException + { + + setResearchInterestId(new Integer(((NumberKey) key).intValue())); + } + + + + + private Publication aPublication; + + /** + * Declares an association between this object and a Publication object + * + * @param v Publication + * @throws TorqueException + */ + public void setPublication(Publication v) throws TorqueException + { + if (v == null) + { + setPublicationId((Integer)null); + } + else + { + setPublicationId(v.getId()); + } + aPublication = v; + } + + + /** + * Get the associated Publication object + * + * @return the associated Publication object + * @throws TorqueException + */ + public Publication getPublication() throws TorqueException + { + if (aPublication == null && (!ObjectUtils.equals(this.publication_id, null))) + { + aPublication = PublicationPeer.retrieveByPK(SimpleKey.keyFor(this.publication_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + Publication obj = PublicationPeer.retrieveByPK(this.publication_id); + obj.addMembers(this); + */ + } + return aPublication; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setPublicationKey(ObjectKey key) throws TorqueException + { + + setPublicationId(new Integer(((NumberKey) key).intValue())); + } + + + + + private PersonData aPersonData; + + /** + * Declares an association between this object and a PersonData object + * + * @param v PersonData + * @throws TorqueException + */ + public void setPersonData(PersonData v) throws TorqueException + { + if (v == null) + { + setPersonDataId((Integer)null); + } + else + { + setPersonDataId(v.getId()); + } + aPersonData = v; + } + + + /** + * Get the associated PersonData object + * + * @return the associated PersonData object + * @throws TorqueException + */ + public PersonData getPersonData() throws TorqueException + { + if (aPersonData == null && (!ObjectUtils.equals(this.person_data_id, null))) + { + aPersonData = PersonDataPeer.retrieveByPK(SimpleKey.keyFor(this.person_data_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + PersonData obj = PersonDataPeer.retrieveByPK(this.person_data_id); + obj.addMembers(this); + */ + } + return aPersonData; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setPersonDataKey(ObjectKey key) throws TorqueException + { + + setPersonDataId(new Integer(((NumberKey) key).intValue())); + } + + + + + private ProjectData aProjectData; + + /** + * Declares an association between this object and a ProjectData object + * + * @param v ProjectData + * @throws TorqueException + */ + public void setProjectData(ProjectData v) throws TorqueException + { + if (v == null) + { + setProjectDataId((Integer)null); + } + else + { + setProjectDataId(v.getId()); + } + aProjectData = v; + } + + + /** + * Get the associated ProjectData object + * + * @return the associated ProjectData object + * @throws TorqueException + */ + public ProjectData getProjectData() throws TorqueException + { + if (aProjectData == null && (!ObjectUtils.equals(this.project_data_id, null))) + { + aProjectData = ProjectDataPeer.retrieveByPK(SimpleKey.keyFor(this.project_data_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + ProjectData obj = ProjectDataPeer.retrieveByPK(this.project_data_id); + obj.addMembers(this); + */ + } + return aProjectData; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setProjectDataKey(ObjectKey key) throws TorqueException + { + + setProjectDataId(new Integer(((NumberKey) key).intValue())); + } + + + + + private OrganizationData aOrganizationData; + + /** + * Declares an association between this object and a OrganizationData object + * + * @param v OrganizationData + * @throws TorqueException + */ + public void setOrganizationData(OrganizationData v) throws TorqueException + { + if (v == null) + { + setOrganizationDataId((Integer)null); + } + else + { + setOrganizationDataId(v.getId()); + } + aOrganizationData = v; + } + + + /** + * Get the associated OrganizationData object + * + * @return the associated OrganizationData object + * @throws TorqueException + */ + public OrganizationData getOrganizationData() throws TorqueException + { + if (aOrganizationData == null && (!ObjectUtils.equals(this.organization_data_id, null))) + { + aOrganizationData = OrganizationDataPeer.retrieveByPK(SimpleKey.keyFor(this.organization_data_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + OrganizationData obj = OrganizationDataPeer.retrieveByPK(this.organization_data_id); + obj.addMembers(this); + */ + } + return aOrganizationData; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setOrganizationDataKey(ObjectKey key) throws TorqueException + { + + setOrganizationDataId(new Integer(((NumberKey) key).intValue())); + } + + + + /** + * Collection to store aggregation of collDocuments + */ + protected List collDocuments; + + /** + * Temporary storage of collDocuments to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initDocuments() + { + if (collDocuments == null) + { + collDocuments = new ArrayList(); + } + } + + /** + * Method called to associate a Document object to this object + * through the Document foreign key attribute + * + * @param l Document + * @throws TorqueException + */ + public void addDocument(Document l) throws TorqueException + { + getDocuments().add(l); + l.setMember((Member) this); + } + + /** + * The criteria used to select the current contents of collDocuments + */ + private Criteria lastDocumentsCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getDocuments(new Criteria()) + * + * @throws TorqueException + */ + public List getDocuments() throws TorqueException + { + if (collDocuments == null) + { + collDocuments = getDocuments(new Criteria(10)); + } + return collDocuments; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this Member has previously + * been saved, it will retrieve related Documents from storage. + * If this Member is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getDocuments(Criteria criteria) throws TorqueException + { + if (collDocuments == null) + { + if (isNew()) + { + collDocuments = new ArrayList(); + } + else + { + criteria.add(DocumentPeer.MEMBER_ID, getId() ); + collDocuments = DocumentPeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(DocumentPeer.MEMBER_ID, getId()); + if (!lastDocumentsCriteria.equals(criteria)) + { + collDocuments = DocumentPeer.doSelect(criteria); + } + } + } + lastDocumentsCriteria = criteria; + + return collDocuments; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getDocuments(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getDocuments(Connection con) throws TorqueException + { + if (collDocuments == null) + { + collDocuments = getDocuments(new Criteria(10), con); + } + return collDocuments; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this Member has previously + * been saved, it will retrieve related Documents from storage. + * If this Member is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getDocuments(Criteria criteria, Connection con) + throws TorqueException + { + if (collDocuments == null) + { + if (isNew()) + { + collDocuments = new ArrayList(); + } + else + { + criteria.add(DocumentPeer.MEMBER_ID, getId()); + collDocuments = DocumentPeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(DocumentPeer.MEMBER_ID, getId()); + if (!lastDocumentsCriteria.equals(criteria)) + { + collDocuments = DocumentPeer.doSelect(criteria, con); + } + } + } + lastDocumentsCriteria = criteria; + + return collDocuments; + } + + + + + + + + + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("CreatedBy"); + fieldNames.add("ModifiedBy"); + fieldNames.add("CreatedOn"); + fieldNames.add("ModifiedOn"); + fieldNames.add("Deleted"); + fieldNames.add("ContactInfoId"); + fieldNames.add("ResearchInterestId"); + fieldNames.add("PublicationId"); + fieldNames.add("MemberType"); + fieldNames.add("PersonDataId"); + fieldNames.add("ProjectDataId"); + fieldNames.add("OrganizationDataId"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("CreatedBy")) + { + return getCreatedBy(); + } + if (name.equals("ModifiedBy")) + { + return getModifiedBy(); + } + if (name.equals("CreatedOn")) + { + return getCreatedOn(); + } + if (name.equals("ModifiedOn")) + { + return getModifiedOn(); + } + if (name.equals("Deleted")) + { + return getDeleted(); + } + if (name.equals("ContactInfoId")) + { + return getContactInfoId(); + } + if (name.equals("ResearchInterestId")) + { + return getResearchInterestId(); + } + if (name.equals("PublicationId")) + { + return getPublicationId(); + } + if (name.equals("MemberType")) + { + return getMemberType(); + } + if (name.equals("PersonDataId")) + { + return getPersonDataId(); + } + if (name.equals("ProjectDataId")) + { + return getProjectDataId(); + } + if (name.equals("OrganizationDataId")) + { + return getOrganizationDataId(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(MemberPeer.ID)) + { + return getId(); + } + if (name.equals(MemberPeer.CREATED_BY)) + { + return getCreatedBy(); + } + if (name.equals(MemberPeer.MODIFIED_BY)) + { + return getModifiedBy(); + } + if (name.equals(MemberPeer.CREATED_ON)) + { + return getCreatedOn(); + } + if (name.equals(MemberPeer.MODIFIED_ON)) + { + return getModifiedOn(); + } + if (name.equals(MemberPeer.DELETED)) + { + return getDeleted(); + } + if (name.equals(MemberPeer.CONTACT_INFO_ID)) + { + return getContactInfoId(); + } + if (name.equals(MemberPeer.RESEARCH_INTEREST_ID)) + { + return getResearchInterestId(); + } + if (name.equals(MemberPeer.PUBLICATION_ID)) + { + return getPublicationId(); + } + if (name.equals(MemberPeer.MEMBER_TYPE)) + { + return getMemberType(); + } + if (name.equals(MemberPeer.PERSON_DATA_ID)) + { + return getPersonDataId(); + } + if (name.equals(MemberPeer.PROJECT_DATA_ID)) + { + return getProjectDataId(); + } + if (name.equals(MemberPeer.ORGANIZATION_DATA_ID)) + { + return getOrganizationDataId(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getCreatedBy(); + } + if (pos == 2) + { + return getModifiedBy(); + } + if (pos == 3) + { + return getCreatedOn(); + } + if (pos == 4) + { + return getModifiedOn(); + } + if (pos == 5) + { + return getDeleted(); + } + if (pos == 6) + { + return getContactInfoId(); + } + if (pos == 7) + { + return getResearchInterestId(); + } + if (pos == 8) + { + return getPublicationId(); + } + if (pos == 9) + { + return getMemberType(); + } + if (pos == 10) + { + return getPersonDataId(); + } + if (pos == 11) + { + return getProjectDataId(); + } + if (pos == 12) + { + return getOrganizationDataId(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(MemberPeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + MemberPeer.doInsert((Member) this, con); + setNew(false); + } + else + { + MemberPeer.doUpdate((Member) this, con); + } + } + + + + if (collDocuments != null) + { + for (int i = 0; i < collDocuments.size(); i++) + { + ((Document) collDocuments.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public Member copy() throws TorqueException + { + return copyInto(new Member()); + } + + protected Member copyInto(Member copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setCreatedBy(created_by); + copyObj.setModifiedBy(modified_by); + copyObj.setCreatedOn(created_on); + copyObj.setModifiedOn(modified_on); + copyObj.setDeleted(deleted); + copyObj.setContactInfoId(contact_info_id); + copyObj.setResearchInterestId(research_interest_id); + copyObj.setPublicationId(publication_id); + copyObj.setMemberType(member_type); + copyObj.setPersonDataId(person_data_id); + copyObj.setProjectDataId(project_data_id); + copyObj.setOrganizationDataId(organization_data_id); + + copyObj.setNew(false); + + + List v = getDocuments(); + for (int i = 0; i < v.size(); i++) + { + Document obj = (Document) v.get(i); + copyObj.addDocument(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public MemberPeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseMemberPeer.java b/src/java/org/thdl/roster/om/BaseMemberPeer.java new file mode 100755 index 0000000..ed8407a --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseMemberPeer.java @@ -0,0 +1,2533 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + + + + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseMemberPeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "Member"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(MemberMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the CREATED_BY field */ + public static final String CREATED_BY; + /** the column name for the MODIFIED_BY field */ + public static final String MODIFIED_BY; + /** the column name for the CREATED_ON field */ + public static final String CREATED_ON; + /** the column name for the MODIFIED_ON field */ + public static final String MODIFIED_ON; + /** the column name for the DELETED field */ + public static final String DELETED; + /** the column name for the CONTACT_INFO_ID field */ + public static final String CONTACT_INFO_ID; + /** the column name for the RESEARCH_INTEREST_ID field */ + public static final String RESEARCH_INTEREST_ID; + /** the column name for the PUBLICATION_ID field */ + public static final String PUBLICATION_ID; + /** the column name for the MEMBER_TYPE field */ + public static final String MEMBER_TYPE; + /** the column name for the PERSON_DATA_ID field */ + public static final String PERSON_DATA_ID; + /** the column name for the PROJECT_DATA_ID field */ + public static final String PROJECT_DATA_ID; + /** the column name for the ORGANIZATION_DATA_ID field */ + public static final String ORGANIZATION_DATA_ID; + + static + { + ID = "Member.ID"; + CREATED_BY = "Member.CREATED_BY"; + MODIFIED_BY = "Member.MODIFIED_BY"; + CREATED_ON = "Member.CREATED_ON"; + MODIFIED_ON = "Member.MODIFIED_ON"; + DELETED = "Member.DELETED"; + CONTACT_INFO_ID = "Member.CONTACT_INFO_ID"; + RESEARCH_INTEREST_ID = "Member.RESEARCH_INTEREST_ID"; + PUBLICATION_ID = "Member.PUBLICATION_ID"; + MEMBER_TYPE = "Member.MEMBER_TYPE"; + PERSON_DATA_ID = "Member.PERSON_DATA_ID"; + PROJECT_DATA_ID = "Member.PROJECT_DATA_ID"; + ORGANIZATION_DATA_ID = "Member.ORGANIZATION_DATA_ID"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(MemberMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 13; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.Member"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + + + /** A key representing a particular subclass */ + public static final String CLASSKEY_PERSON = + "person"; + + /** A class that can be returned by this peer. */ + public static final String CLASSNAME_PERSON = + "org.thdl.roster.om.Person"; + + /** A class that can be returned by this peer. */ + public static final Class CLASS_PERSON = + initClass(CLASSNAME_PERSON); + /** A key representing a particular subclass */ + public static final String CLASSKEY_PROJECT = + "project"; + + /** A class that can be returned by this peer. */ + public static final String CLASSNAME_PROJECT = + "org.thdl.roster.om.Project"; + + /** A class that can be returned by this peer. */ + public static final Class CLASS_PROJECT = + initClass(CLASSNAME_PROJECT); + /** A key representing a particular subclass */ + public static final String CLASSKEY_ORGANIZATION = + "organization"; + + /** A class that can be returned by this peer. */ + public static final String CLASSNAME_ORGANIZATION = + "org.thdl.roster.om.Organization"; + + /** A class that can be returned by this peer. */ + public static final Class CLASS_ORGANIZATION = + initClass(CLASSNAME_ORGANIZATION); + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseMemberPeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(CREATED_BY); + criteria.addSelectColumn(MODIFIED_BY); + criteria.addSelectColumn(CREATED_ON); + criteria.addSelectColumn(MODIFIED_ON); + criteria.addSelectColumn(DELETED); + criteria.addSelectColumn(CONTACT_INFO_ID); + criteria.addSelectColumn(RESEARCH_INTEREST_ID); + criteria.addSelectColumn(PUBLICATION_ID); + criteria.addSelectColumn(MEMBER_TYPE); + criteria.addSelectColumn(PERSON_DATA_ID); + criteria.addSelectColumn(PROJECT_DATA_ID); + criteria.addSelectColumn(ORGANIZATION_DATA_ID); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Member row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + Member obj = (Member) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + Member obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setCreatedBy(row.getValue(offset + 1).asIntegerObj()); + obj.setModifiedBy(row.getValue(offset + 2).asIntegerObj()); + obj.setCreatedOn(row.getValue(offset + 3).asUtilDate()); + obj.setModifiedOn(row.getValue(offset + 4).asUtilDate()); + obj.setDeleted(row.getValue(offset + 5).asString()); + obj.setContactInfoId(row.getValue(offset + 6).asIntegerObj()); + obj.setResearchInterestId(row.getValue(offset + 7).asIntegerObj()); + obj.setPublicationId(row.getValue(offset + 8).asIntegerObj()); + obj.setMemberType(row.getValue(offset + 9).asString()); + obj.setPersonDataId(row.getValue(offset + 10).asIntegerObj()); + obj.setProjectDataId(row.getValue(offset + 11).asIntegerObj()); + obj.setOrganizationDataId(row.getValue(offset + 12).asIntegerObj()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseMemberPeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(MemberPeer.row2Object(row, 1, + MemberPeer.getOMClass(row, 1))); + } + return results; + } + + + /** + * The returned Class will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass(Record record, int offset) + throws TorqueException + { + Class c = null; + try + { + Class omClass = null; + String classKey = + record.getValue(offset - 1 + 10) + .asString(); + if (CLASSKEY_PERSON.equals(classKey)) + { + omClass = CLASS_PERSON; + } + else if (CLASSKEY_PROJECT.equals(classKey)) + { + omClass = CLASS_PROJECT; + } + else if (CLASSKEY_ORGANIZATION.equals(classKey)) + { + omClass = CLASS_ORGANIZATION; + } + else + { + omClass = getOMClass(); + } + c = omClass; + } + catch (Exception e) + { + throw new TorqueException(e); + } + return c; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseMemberPeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseMemberPeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Member obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(Member obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Member obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Member obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Member) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(Member obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(Member) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Member obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(Member) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Member obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseMemberPeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( Member obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(CREATED_BY, obj.getCreatedBy()); + criteria.add(MODIFIED_BY, obj.getModifiedBy()); + criteria.add(CREATED_ON, obj.getCreatedOn()); + criteria.add(MODIFIED_ON, obj.getModifiedOn()); + criteria.add(DELETED, obj.getDeleted()); + criteria.add(CONTACT_INFO_ID, obj.getContactInfoId()); + criteria.add(RESEARCH_INTEREST_ID, obj.getResearchInterestId()); + criteria.add(PUBLICATION_ID, obj.getPublicationId()); + criteria.add(MEMBER_TYPE, obj.getMemberType()); + criteria.add(PERSON_DATA_ID, obj.getPersonDataId()); + criteria.add(PROJECT_DATA_ID, obj.getProjectDataId()); + criteria.add(ORGANIZATION_DATA_ID, obj.getOrganizationDataId()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Member retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Member retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + Member retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Member retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (Member)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + + + /** + * selects a collection of Member objects pre-filled with their + * ContactInfo objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in MemberPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinContactInfo(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + MemberPeer.addSelectColumns(c); + int offset = numColumns + 1; + ContactInfoPeer.addSelectColumns(c); + + + c.addJoin(MemberPeer.CONTACT_INFO_ID, + ContactInfoPeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = MemberPeer.getOMClass(row, 1); + + Member obj1 = (Member) MemberPeer + .row2Object(row, 1, omClass); + + + omClass = ContactInfoPeer.getOMClass(); + ContactInfo obj2 = (ContactInfo)ContactInfoPeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ContactInfo temp_obj2 = (ContactInfo)temp_obj1.getContactInfo(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addMember(obj1); + break; + } + } + if (newObject) + { + obj2.initMembers(); + obj2.addMember(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + + /** + * selects a collection of Member objects pre-filled with their + * ResearchInterest objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in MemberPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinResearchInterest(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + MemberPeer.addSelectColumns(c); + int offset = numColumns + 1; + ResearchInterestPeer.addSelectColumns(c); + + + c.addJoin(MemberPeer.RESEARCH_INTEREST_ID, + ResearchInterestPeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = MemberPeer.getOMClass(row, 1); + + Member obj1 = (Member) MemberPeer + .row2Object(row, 1, omClass); + + + omClass = ResearchInterestPeer.getOMClass(); + ResearchInterest obj2 = (ResearchInterest)ResearchInterestPeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ResearchInterest temp_obj2 = (ResearchInterest)temp_obj1.getResearchInterest(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addMember(obj1); + break; + } + } + if (newObject) + { + obj2.initMembers(); + obj2.addMember(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + + /** + * selects a collection of Member objects pre-filled with their + * Publication objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in MemberPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinPublication(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + MemberPeer.addSelectColumns(c); + int offset = numColumns + 1; + PublicationPeer.addSelectColumns(c); + + + c.addJoin(MemberPeer.PUBLICATION_ID, + PublicationPeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = MemberPeer.getOMClass(row, 1); + + Member obj1 = (Member) MemberPeer + .row2Object(row, 1, omClass); + + + omClass = PublicationPeer.getOMClass(); + Publication obj2 = (Publication)PublicationPeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + Publication temp_obj2 = (Publication)temp_obj1.getPublication(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addMember(obj1); + break; + } + } + if (newObject) + { + obj2.initMembers(); + obj2.addMember(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + + /** + * selects a collection of Member objects pre-filled with their + * PersonData objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in MemberPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinPersonData(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + MemberPeer.addSelectColumns(c); + int offset = numColumns + 1; + PersonDataPeer.addSelectColumns(c); + + + c.addJoin(MemberPeer.PERSON_DATA_ID, + PersonDataPeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = MemberPeer.getOMClass(row, 1); + + Member obj1 = (Member) MemberPeer + .row2Object(row, 1, omClass); + + + omClass = PersonDataPeer.getOMClass(); + PersonData obj2 = (PersonData)PersonDataPeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + PersonData temp_obj2 = (PersonData)temp_obj1.getPersonData(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addMember(obj1); + break; + } + } + if (newObject) + { + obj2.initMembers(); + obj2.addMember(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + + /** + * selects a collection of Member objects pre-filled with their + * ProjectData objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in MemberPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinProjectData(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + MemberPeer.addSelectColumns(c); + int offset = numColumns + 1; + ProjectDataPeer.addSelectColumns(c); + + + c.addJoin(MemberPeer.PROJECT_DATA_ID, + ProjectDataPeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = MemberPeer.getOMClass(row, 1); + + Member obj1 = (Member) MemberPeer + .row2Object(row, 1, omClass); + + + omClass = ProjectDataPeer.getOMClass(); + ProjectData obj2 = (ProjectData)ProjectDataPeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ProjectData temp_obj2 = (ProjectData)temp_obj1.getProjectData(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addMember(obj1); + break; + } + } + if (newObject) + { + obj2.initMembers(); + obj2.addMember(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + + /** + * selects a collection of Member objects pre-filled with their + * OrganizationData objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in MemberPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinOrganizationData(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + MemberPeer.addSelectColumns(c); + int offset = numColumns + 1; + OrganizationDataPeer.addSelectColumns(c); + + + c.addJoin(MemberPeer.ORGANIZATION_DATA_ID, + OrganizationDataPeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = MemberPeer.getOMClass(row, 1); + + Member obj1 = (Member) MemberPeer + .row2Object(row, 1, omClass); + + + omClass = OrganizationDataPeer.getOMClass(); + OrganizationData obj2 = (OrganizationData)OrganizationDataPeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + OrganizationData temp_obj2 = (OrganizationData)temp_obj1.getOrganizationData(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addMember(obj1); + break; + } + } + if (newObject) + { + obj2.initMembers(); + obj2.addMember(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + + + + + /** + * selects a collection of Member objects pre-filled with + * all related objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in MemberPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinAllExceptContactInfo(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to another value + // so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + addSelectColumns(c); + int offset2 = numColumns + 1; + + + ResearchInterestPeer.addSelectColumns(c); + int offset3 = offset2 + ResearchInterestPeer.numColumns; + + PublicationPeer.addSelectColumns(c); + int offset4 = offset3 + PublicationPeer.numColumns; + + PersonDataPeer.addSelectColumns(c); + int offset5 = offset4 + PersonDataPeer.numColumns; + + ProjectDataPeer.addSelectColumns(c); + int offset6 = offset5 + ProjectDataPeer.numColumns; + + OrganizationDataPeer.addSelectColumns(c); + int offset7 = offset6 + OrganizationDataPeer.numColumns; + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record)rows.get(i); + + Class omClass = MemberPeer.getOMClass(row, 1); + + Member obj1 = (Member)MemberPeer + .row2Object(row, 1, omClass); + + + + + + + + omClass = ResearchInterestPeer.getOMClass(); + ResearchInterest obj2 = (ResearchInterest)ResearchInterestPeer + .row2Object( row, offset2, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ResearchInterest temp_obj2 = (ResearchInterest)temp_obj1.getResearchInterest(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addMember(obj1); + break; + } + } + if (newObject) + { + obj2.initMembers(); + obj2.addMember(obj1); + } + + + + + omClass = PublicationPeer.getOMClass(); + Publication obj3 = (Publication)PublicationPeer + .row2Object( row, offset3, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + Publication temp_obj3 = (Publication)temp_obj1.getPublication(); + if (temp_obj3.getPrimaryKey().equals(obj3.getPrimaryKey())) + { + newObject = false; + temp_obj3.addMember(obj1); + break; + } + } + if (newObject) + { + obj3.initMembers(); + obj3.addMember(obj1); + } + + + + + omClass = PersonDataPeer.getOMClass(); + PersonData obj4 = (PersonData)PersonDataPeer + .row2Object( row, offset4, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + PersonData temp_obj4 = (PersonData)temp_obj1.getPersonData(); + if (temp_obj4.getPrimaryKey().equals(obj4.getPrimaryKey())) + { + newObject = false; + temp_obj4.addMember(obj1); + break; + } + } + if (newObject) + { + obj4.initMembers(); + obj4.addMember(obj1); + } + + + + + omClass = ProjectDataPeer.getOMClass(); + ProjectData obj5 = (ProjectData)ProjectDataPeer + .row2Object( row, offset5, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ProjectData temp_obj5 = (ProjectData)temp_obj1.getProjectData(); + if (temp_obj5.getPrimaryKey().equals(obj5.getPrimaryKey())) + { + newObject = false; + temp_obj5.addMember(obj1); + break; + } + } + if (newObject) + { + obj5.initMembers(); + obj5.addMember(obj1); + } + + + + + omClass = OrganizationDataPeer.getOMClass(); + OrganizationData obj6 = (OrganizationData)OrganizationDataPeer + .row2Object( row, offset6, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + OrganizationData temp_obj6 = (OrganizationData)temp_obj1.getOrganizationData(); + if (temp_obj6.getPrimaryKey().equals(obj6.getPrimaryKey())) + { + newObject = false; + temp_obj6.addMember(obj1); + break; + } + } + if (newObject) + { + obj6.initMembers(); + obj6.addMember(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + /** + * selects a collection of Member objects pre-filled with + * all related objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in MemberPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinAllExceptResearchInterest(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to another value + // so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + addSelectColumns(c); + int offset2 = numColumns + 1; + + ContactInfoPeer.addSelectColumns(c); + int offset3 = offset2 + ContactInfoPeer.numColumns; + + + PublicationPeer.addSelectColumns(c); + int offset4 = offset3 + PublicationPeer.numColumns; + + PersonDataPeer.addSelectColumns(c); + int offset5 = offset4 + PersonDataPeer.numColumns; + + ProjectDataPeer.addSelectColumns(c); + int offset6 = offset5 + ProjectDataPeer.numColumns; + + OrganizationDataPeer.addSelectColumns(c); + int offset7 = offset6 + OrganizationDataPeer.numColumns; + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record)rows.get(i); + + Class omClass = MemberPeer.getOMClass(row, 1); + + Member obj1 = (Member)MemberPeer + .row2Object(row, 1, omClass); + + + + + + + omClass = ContactInfoPeer.getOMClass(); + ContactInfo obj2 = (ContactInfo)ContactInfoPeer + .row2Object( row, offset2, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ContactInfo temp_obj2 = (ContactInfo)temp_obj1.getContactInfo(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addMember(obj1); + break; + } + } + if (newObject) + { + obj2.initMembers(); + obj2.addMember(obj1); + } + + + + + + omClass = PublicationPeer.getOMClass(); + Publication obj3 = (Publication)PublicationPeer + .row2Object( row, offset3, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + Publication temp_obj3 = (Publication)temp_obj1.getPublication(); + if (temp_obj3.getPrimaryKey().equals(obj3.getPrimaryKey())) + { + newObject = false; + temp_obj3.addMember(obj1); + break; + } + } + if (newObject) + { + obj3.initMembers(); + obj3.addMember(obj1); + } + + + + + omClass = PersonDataPeer.getOMClass(); + PersonData obj4 = (PersonData)PersonDataPeer + .row2Object( row, offset4, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + PersonData temp_obj4 = (PersonData)temp_obj1.getPersonData(); + if (temp_obj4.getPrimaryKey().equals(obj4.getPrimaryKey())) + { + newObject = false; + temp_obj4.addMember(obj1); + break; + } + } + if (newObject) + { + obj4.initMembers(); + obj4.addMember(obj1); + } + + + + + omClass = ProjectDataPeer.getOMClass(); + ProjectData obj5 = (ProjectData)ProjectDataPeer + .row2Object( row, offset5, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ProjectData temp_obj5 = (ProjectData)temp_obj1.getProjectData(); + if (temp_obj5.getPrimaryKey().equals(obj5.getPrimaryKey())) + { + newObject = false; + temp_obj5.addMember(obj1); + break; + } + } + if (newObject) + { + obj5.initMembers(); + obj5.addMember(obj1); + } + + + + + omClass = OrganizationDataPeer.getOMClass(); + OrganizationData obj6 = (OrganizationData)OrganizationDataPeer + .row2Object( row, offset6, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + OrganizationData temp_obj6 = (OrganizationData)temp_obj1.getOrganizationData(); + if (temp_obj6.getPrimaryKey().equals(obj6.getPrimaryKey())) + { + newObject = false; + temp_obj6.addMember(obj1); + break; + } + } + if (newObject) + { + obj6.initMembers(); + obj6.addMember(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + /** + * selects a collection of Member objects pre-filled with + * all related objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in MemberPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinAllExceptPublication(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to another value + // so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + addSelectColumns(c); + int offset2 = numColumns + 1; + + ContactInfoPeer.addSelectColumns(c); + int offset3 = offset2 + ContactInfoPeer.numColumns; + + ResearchInterestPeer.addSelectColumns(c); + int offset4 = offset3 + ResearchInterestPeer.numColumns; + + + PersonDataPeer.addSelectColumns(c); + int offset5 = offset4 + PersonDataPeer.numColumns; + + ProjectDataPeer.addSelectColumns(c); + int offset6 = offset5 + ProjectDataPeer.numColumns; + + OrganizationDataPeer.addSelectColumns(c); + int offset7 = offset6 + OrganizationDataPeer.numColumns; + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record)rows.get(i); + + Class omClass = MemberPeer.getOMClass(row, 1); + + Member obj1 = (Member)MemberPeer + .row2Object(row, 1, omClass); + + + + + + + omClass = ContactInfoPeer.getOMClass(); + ContactInfo obj2 = (ContactInfo)ContactInfoPeer + .row2Object( row, offset2, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ContactInfo temp_obj2 = (ContactInfo)temp_obj1.getContactInfo(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addMember(obj1); + break; + } + } + if (newObject) + { + obj2.initMembers(); + obj2.addMember(obj1); + } + + + + + omClass = ResearchInterestPeer.getOMClass(); + ResearchInterest obj3 = (ResearchInterest)ResearchInterestPeer + .row2Object( row, offset3, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ResearchInterest temp_obj3 = (ResearchInterest)temp_obj1.getResearchInterest(); + if (temp_obj3.getPrimaryKey().equals(obj3.getPrimaryKey())) + { + newObject = false; + temp_obj3.addMember(obj1); + break; + } + } + if (newObject) + { + obj3.initMembers(); + obj3.addMember(obj1); + } + + + + + + omClass = PersonDataPeer.getOMClass(); + PersonData obj4 = (PersonData)PersonDataPeer + .row2Object( row, offset4, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + PersonData temp_obj4 = (PersonData)temp_obj1.getPersonData(); + if (temp_obj4.getPrimaryKey().equals(obj4.getPrimaryKey())) + { + newObject = false; + temp_obj4.addMember(obj1); + break; + } + } + if (newObject) + { + obj4.initMembers(); + obj4.addMember(obj1); + } + + + + + omClass = ProjectDataPeer.getOMClass(); + ProjectData obj5 = (ProjectData)ProjectDataPeer + .row2Object( row, offset5, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ProjectData temp_obj5 = (ProjectData)temp_obj1.getProjectData(); + if (temp_obj5.getPrimaryKey().equals(obj5.getPrimaryKey())) + { + newObject = false; + temp_obj5.addMember(obj1); + break; + } + } + if (newObject) + { + obj5.initMembers(); + obj5.addMember(obj1); + } + + + + + omClass = OrganizationDataPeer.getOMClass(); + OrganizationData obj6 = (OrganizationData)OrganizationDataPeer + .row2Object( row, offset6, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + OrganizationData temp_obj6 = (OrganizationData)temp_obj1.getOrganizationData(); + if (temp_obj6.getPrimaryKey().equals(obj6.getPrimaryKey())) + { + newObject = false; + temp_obj6.addMember(obj1); + break; + } + } + if (newObject) + { + obj6.initMembers(); + obj6.addMember(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + /** + * selects a collection of Member objects pre-filled with + * all related objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in MemberPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinAllExceptPersonData(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to another value + // so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + addSelectColumns(c); + int offset2 = numColumns + 1; + + ContactInfoPeer.addSelectColumns(c); + int offset3 = offset2 + ContactInfoPeer.numColumns; + + ResearchInterestPeer.addSelectColumns(c); + int offset4 = offset3 + ResearchInterestPeer.numColumns; + + PublicationPeer.addSelectColumns(c); + int offset5 = offset4 + PublicationPeer.numColumns; + + + ProjectDataPeer.addSelectColumns(c); + int offset6 = offset5 + ProjectDataPeer.numColumns; + + OrganizationDataPeer.addSelectColumns(c); + int offset7 = offset6 + OrganizationDataPeer.numColumns; + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record)rows.get(i); + + Class omClass = MemberPeer.getOMClass(row, 1); + + Member obj1 = (Member)MemberPeer + .row2Object(row, 1, omClass); + + + + + + + omClass = ContactInfoPeer.getOMClass(); + ContactInfo obj2 = (ContactInfo)ContactInfoPeer + .row2Object( row, offset2, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ContactInfo temp_obj2 = (ContactInfo)temp_obj1.getContactInfo(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addMember(obj1); + break; + } + } + if (newObject) + { + obj2.initMembers(); + obj2.addMember(obj1); + } + + + + + omClass = ResearchInterestPeer.getOMClass(); + ResearchInterest obj3 = (ResearchInterest)ResearchInterestPeer + .row2Object( row, offset3, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ResearchInterest temp_obj3 = (ResearchInterest)temp_obj1.getResearchInterest(); + if (temp_obj3.getPrimaryKey().equals(obj3.getPrimaryKey())) + { + newObject = false; + temp_obj3.addMember(obj1); + break; + } + } + if (newObject) + { + obj3.initMembers(); + obj3.addMember(obj1); + } + + + + + omClass = PublicationPeer.getOMClass(); + Publication obj4 = (Publication)PublicationPeer + .row2Object( row, offset4, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + Publication temp_obj4 = (Publication)temp_obj1.getPublication(); + if (temp_obj4.getPrimaryKey().equals(obj4.getPrimaryKey())) + { + newObject = false; + temp_obj4.addMember(obj1); + break; + } + } + if (newObject) + { + obj4.initMembers(); + obj4.addMember(obj1); + } + + + + + + omClass = ProjectDataPeer.getOMClass(); + ProjectData obj5 = (ProjectData)ProjectDataPeer + .row2Object( row, offset5, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ProjectData temp_obj5 = (ProjectData)temp_obj1.getProjectData(); + if (temp_obj5.getPrimaryKey().equals(obj5.getPrimaryKey())) + { + newObject = false; + temp_obj5.addMember(obj1); + break; + } + } + if (newObject) + { + obj5.initMembers(); + obj5.addMember(obj1); + } + + + + + omClass = OrganizationDataPeer.getOMClass(); + OrganizationData obj6 = (OrganizationData)OrganizationDataPeer + .row2Object( row, offset6, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + OrganizationData temp_obj6 = (OrganizationData)temp_obj1.getOrganizationData(); + if (temp_obj6.getPrimaryKey().equals(obj6.getPrimaryKey())) + { + newObject = false; + temp_obj6.addMember(obj1); + break; + } + } + if (newObject) + { + obj6.initMembers(); + obj6.addMember(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + /** + * selects a collection of Member objects pre-filled with + * all related objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in MemberPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinAllExceptProjectData(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to another value + // so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + addSelectColumns(c); + int offset2 = numColumns + 1; + + ContactInfoPeer.addSelectColumns(c); + int offset3 = offset2 + ContactInfoPeer.numColumns; + + ResearchInterestPeer.addSelectColumns(c); + int offset4 = offset3 + ResearchInterestPeer.numColumns; + + PublicationPeer.addSelectColumns(c); + int offset5 = offset4 + PublicationPeer.numColumns; + + PersonDataPeer.addSelectColumns(c); + int offset6 = offset5 + PersonDataPeer.numColumns; + + + OrganizationDataPeer.addSelectColumns(c); + int offset7 = offset6 + OrganizationDataPeer.numColumns; + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record)rows.get(i); + + Class omClass = MemberPeer.getOMClass(row, 1); + + Member obj1 = (Member)MemberPeer + .row2Object(row, 1, omClass); + + + + + + + omClass = ContactInfoPeer.getOMClass(); + ContactInfo obj2 = (ContactInfo)ContactInfoPeer + .row2Object( row, offset2, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ContactInfo temp_obj2 = (ContactInfo)temp_obj1.getContactInfo(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addMember(obj1); + break; + } + } + if (newObject) + { + obj2.initMembers(); + obj2.addMember(obj1); + } + + + + + omClass = ResearchInterestPeer.getOMClass(); + ResearchInterest obj3 = (ResearchInterest)ResearchInterestPeer + .row2Object( row, offset3, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ResearchInterest temp_obj3 = (ResearchInterest)temp_obj1.getResearchInterest(); + if (temp_obj3.getPrimaryKey().equals(obj3.getPrimaryKey())) + { + newObject = false; + temp_obj3.addMember(obj1); + break; + } + } + if (newObject) + { + obj3.initMembers(); + obj3.addMember(obj1); + } + + + + + omClass = PublicationPeer.getOMClass(); + Publication obj4 = (Publication)PublicationPeer + .row2Object( row, offset4, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + Publication temp_obj4 = (Publication)temp_obj1.getPublication(); + if (temp_obj4.getPrimaryKey().equals(obj4.getPrimaryKey())) + { + newObject = false; + temp_obj4.addMember(obj1); + break; + } + } + if (newObject) + { + obj4.initMembers(); + obj4.addMember(obj1); + } + + + + + omClass = PersonDataPeer.getOMClass(); + PersonData obj5 = (PersonData)PersonDataPeer + .row2Object( row, offset5, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + PersonData temp_obj5 = (PersonData)temp_obj1.getPersonData(); + if (temp_obj5.getPrimaryKey().equals(obj5.getPrimaryKey())) + { + newObject = false; + temp_obj5.addMember(obj1); + break; + } + } + if (newObject) + { + obj5.initMembers(); + obj5.addMember(obj1); + } + + + + + + omClass = OrganizationDataPeer.getOMClass(); + OrganizationData obj6 = (OrganizationData)OrganizationDataPeer + .row2Object( row, offset6, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + OrganizationData temp_obj6 = (OrganizationData)temp_obj1.getOrganizationData(); + if (temp_obj6.getPrimaryKey().equals(obj6.getPrimaryKey())) + { + newObject = false; + temp_obj6.addMember(obj1); + break; + } + } + if (newObject) + { + obj6.initMembers(); + obj6.addMember(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + /** + * selects a collection of Member objects pre-filled with + * all related objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in MemberPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinAllExceptOrganizationData(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to another value + // so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + addSelectColumns(c); + int offset2 = numColumns + 1; + + ContactInfoPeer.addSelectColumns(c); + int offset3 = offset2 + ContactInfoPeer.numColumns; + + ResearchInterestPeer.addSelectColumns(c); + int offset4 = offset3 + ResearchInterestPeer.numColumns; + + PublicationPeer.addSelectColumns(c); + int offset5 = offset4 + PublicationPeer.numColumns; + + PersonDataPeer.addSelectColumns(c); + int offset6 = offset5 + PersonDataPeer.numColumns; + + ProjectDataPeer.addSelectColumns(c); + int offset7 = offset6 + ProjectDataPeer.numColumns; + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record)rows.get(i); + + Class omClass = MemberPeer.getOMClass(row, 1); + + Member obj1 = (Member)MemberPeer + .row2Object(row, 1, omClass); + + + + + + + omClass = ContactInfoPeer.getOMClass(); + ContactInfo obj2 = (ContactInfo)ContactInfoPeer + .row2Object( row, offset2, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ContactInfo temp_obj2 = (ContactInfo)temp_obj1.getContactInfo(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addMember(obj1); + break; + } + } + if (newObject) + { + obj2.initMembers(); + obj2.addMember(obj1); + } + + + + + omClass = ResearchInterestPeer.getOMClass(); + ResearchInterest obj3 = (ResearchInterest)ResearchInterestPeer + .row2Object( row, offset3, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ResearchInterest temp_obj3 = (ResearchInterest)temp_obj1.getResearchInterest(); + if (temp_obj3.getPrimaryKey().equals(obj3.getPrimaryKey())) + { + newObject = false; + temp_obj3.addMember(obj1); + break; + } + } + if (newObject) + { + obj3.initMembers(); + obj3.addMember(obj1); + } + + + + + omClass = PublicationPeer.getOMClass(); + Publication obj4 = (Publication)PublicationPeer + .row2Object( row, offset4, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + Publication temp_obj4 = (Publication)temp_obj1.getPublication(); + if (temp_obj4.getPrimaryKey().equals(obj4.getPrimaryKey())) + { + newObject = false; + temp_obj4.addMember(obj1); + break; + } + } + if (newObject) + { + obj4.initMembers(); + obj4.addMember(obj1); + } + + + + + omClass = PersonDataPeer.getOMClass(); + PersonData obj5 = (PersonData)PersonDataPeer + .row2Object( row, offset5, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + PersonData temp_obj5 = (PersonData)temp_obj1.getPersonData(); + if (temp_obj5.getPrimaryKey().equals(obj5.getPrimaryKey())) + { + newObject = false; + temp_obj5.addMember(obj1); + break; + } + } + if (newObject) + { + obj5.initMembers(); + obj5.addMember(obj1); + } + + + + + omClass = ProjectDataPeer.getOMClass(); + ProjectData obj6 = (ProjectData)ProjectDataPeer + .row2Object( row, offset6, omClass); + + newObject = true; + for (int j = 0; j < results.size(); j++) + { + Member temp_obj1 = (Member)results.get(j); + ProjectData temp_obj6 = (ProjectData)temp_obj1.getProjectData(); + if (temp_obj6.getPrimaryKey().equals(obj6.getPrimaryKey())) + { + newObject = false; + temp_obj6.addMember(obj1); + break; + } + } + if (newObject) + { + obj6.initMembers(); + obj6.addMember(obj1); + } + + results.add(obj1); + } + return results; + } + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseOrganizationData.java b/src/java/org/thdl/roster/om/BaseOrganizationData.java new file mode 100755 index 0000000..a057dc5 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseOrganizationData.java @@ -0,0 +1,1206 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to OrganizationData + */ +public abstract class BaseOrganizationData extends BaseObject +{ + /** The Peer class */ + private static final OrganizationDataPeer peer = + new OrganizationDataPeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the name field + */ + private String name; + + /** + * The value for the parent_organization field + */ + private String parent_organization; + + /** + * The value for the divisions field + */ + private String divisions; + + /** + * The value for the people field + */ + private String people; + + /** + * The value for the mailing_list field + */ + private String mailing_list; + + /** + * The value for the description field + */ + private String description; + + /** + * The value for the history field + */ + private String history; + + /** + * The value for the education_programs field + */ + private String education_programs; + + /** + * The value for the resources field + */ + private String resources; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + + // update associated Member + if (collMembers != null) + { + for (int i = 0; i < collMembers.size(); i++) + { + ((Member) collMembers.get(i)) + .setOrganizationDataId(v); + } + } + + // update associated OrganizationOrganizationType + if (collOrganizationOrganizationTypes != null) + { + for (int i = 0; i < collOrganizationOrganizationTypes.size(); i++) + { + ((OrganizationOrganizationType) collOrganizationOrganizationTypes.get(i)) + .setOrganizationDataId(v); + } + } + } + + + /** + * Get the Name + * + * @return String + */ + public String getName() + { + return name; + } + + + /** + * Set the value of Name + * + * @param v new value + */ + public void setName(String v) + { + + + + if (!ObjectUtils.equals(this.name, v)) + { + this.name = v; + setModified(true); + } + + + } + + + /** + * Get the ParentOrganization + * + * @return String + */ + public String getParentOrganization() + { + return parent_organization; + } + + + /** + * Set the value of ParentOrganization + * + * @param v new value + */ + public void setParentOrganization(String v) + { + + + + if (!ObjectUtils.equals(this.parent_organization, v)) + { + this.parent_organization = v; + setModified(true); + } + + + } + + + /** + * Get the Divisions + * + * @return String + */ + public String getDivisions() + { + return divisions; + } + + + /** + * Set the value of Divisions + * + * @param v new value + */ + public void setDivisions(String v) + { + + + + if (!ObjectUtils.equals(this.divisions, v)) + { + this.divisions = v; + setModified(true); + } + + + } + + + /** + * Get the People + * + * @return String + */ + public String getPeople() + { + return people; + } + + + /** + * Set the value of People + * + * @param v new value + */ + public void setPeople(String v) + { + + + + if (!ObjectUtils.equals(this.people, v)) + { + this.people = v; + setModified(true); + } + + + } + + + /** + * Get the MailingList + * + * @return String + */ + public String getMailingList() + { + return mailing_list; + } + + + /** + * Set the value of MailingList + * + * @param v new value + */ + public void setMailingList(String v) + { + + + + if (!ObjectUtils.equals(this.mailing_list, v)) + { + this.mailing_list = v; + setModified(true); + } + + + } + + + /** + * Get the Description + * + * @return String + */ + public String getDescription() + { + return description; + } + + + /** + * Set the value of Description + * + * @param v new value + */ + public void setDescription(String v) + { + + + + if (!ObjectUtils.equals(this.description, v)) + { + this.description = v; + setModified(true); + } + + + } + + + /** + * Get the History + * + * @return String + */ + public String getHistory() + { + return history; + } + + + /** + * Set the value of History + * + * @param v new value + */ + public void setHistory(String v) + { + + + + if (!ObjectUtils.equals(this.history, v)) + { + this.history = v; + setModified(true); + } + + + } + + + /** + * Get the EducationPrograms + * + * @return String + */ + public String getEducationPrograms() + { + return education_programs; + } + + + /** + * Set the value of EducationPrograms + * + * @param v new value + */ + public void setEducationPrograms(String v) + { + + + + if (!ObjectUtils.equals(this.education_programs, v)) + { + this.education_programs = v; + setModified(true); + } + + + } + + + /** + * Get the Resources + * + * @return String + */ + public String getResources() + { + return resources; + } + + + /** + * Set the value of Resources + * + * @param v new value + */ + public void setResources(String v) + { + + + + if (!ObjectUtils.equals(this.resources, v)) + { + this.resources = v; + setModified(true); + } + + + } + + + + + + + /** + * Collection to store aggregation of collMembers + */ + protected List collMembers; + + /** + * Temporary storage of collMembers to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initMembers() + { + if (collMembers == null) + { + collMembers = new ArrayList(); + } + } + + /** + * Method called to associate a Member object to this object + * through the Member foreign key attribute + * + * @param l Member + * @throws TorqueException + */ + public void addMember(Member l) throws TorqueException + { + getMembers().add(l); + l.setOrganizationData((OrganizationData) this); + } + + /** + * The criteria used to select the current contents of collMembers + */ + private Criteria lastMembersCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getMembers(new Criteria()) + * + * @throws TorqueException + */ + public List getMembers() throws TorqueException + { + if (collMembers == null) + { + collMembers = getMembers(new Criteria(10)); + } + return collMembers; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this OrganizationData has previously + * been saved, it will retrieve related Members from storage. + * If this OrganizationData is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getMembers(Criteria criteria) throws TorqueException + { + if (collMembers == null) + { + if (isNew()) + { + collMembers = new ArrayList(); + } + else + { + criteria.add(MemberPeer.ORGANIZATION_DATA_ID, getId() ); + collMembers = MemberPeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(MemberPeer.ORGANIZATION_DATA_ID, getId()); + if (!lastMembersCriteria.equals(criteria)) + { + collMembers = MemberPeer.doSelect(criteria); + } + } + } + lastMembersCriteria = criteria; + + return collMembers; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getMembers(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getMembers(Connection con) throws TorqueException + { + if (collMembers == null) + { + collMembers = getMembers(new Criteria(10), con); + } + return collMembers; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this OrganizationData has previously + * been saved, it will retrieve related Members from storage. + * If this OrganizationData is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getMembers(Criteria criteria, Connection con) + throws TorqueException + { + if (collMembers == null) + { + if (isNew()) + { + collMembers = new ArrayList(); + } + else + { + criteria.add(MemberPeer.ORGANIZATION_DATA_ID, getId()); + collMembers = MemberPeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(MemberPeer.ORGANIZATION_DATA_ID, getId()); + if (!lastMembersCriteria.equals(criteria)) + { + collMembers = MemberPeer.doSelect(criteria, con); + } + } + } + lastMembersCriteria = criteria; + + return collMembers; + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /** + * Collection to store aggregation of collOrganizationOrganizationTypes + */ + protected List collOrganizationOrganizationTypes; + + /** + * Temporary storage of collOrganizationOrganizationTypes to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initOrganizationOrganizationTypes() + { + if (collOrganizationOrganizationTypes == null) + { + collOrganizationOrganizationTypes = new ArrayList(); + } + } + + /** + * Method called to associate a OrganizationOrganizationType object to this object + * through the OrganizationOrganizationType foreign key attribute + * + * @param l OrganizationOrganizationType + * @throws TorqueException + */ + public void addOrganizationOrganizationType(OrganizationOrganizationType l) throws TorqueException + { + getOrganizationOrganizationTypes().add(l); + l.setOrganizationData((OrganizationData) this); + } + + /** + * The criteria used to select the current contents of collOrganizationOrganizationTypes + */ + private Criteria lastOrganizationOrganizationTypesCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getOrganizationOrganizationTypes(new Criteria()) + * + * @throws TorqueException + */ + public List getOrganizationOrganizationTypes() throws TorqueException + { + if (collOrganizationOrganizationTypes == null) + { + collOrganizationOrganizationTypes = getOrganizationOrganizationTypes(new Criteria(10)); + } + return collOrganizationOrganizationTypes; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this OrganizationData has previously + * been saved, it will retrieve related OrganizationOrganizationTypes from storage. + * If this OrganizationData is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getOrganizationOrganizationTypes(Criteria criteria) throws TorqueException + { + if (collOrganizationOrganizationTypes == null) + { + if (isNew()) + { + collOrganizationOrganizationTypes = new ArrayList(); + } + else + { + criteria.add(OrganizationOrganizationTypePeer.ORGANIZATION_DATA_ID, getId() ); + collOrganizationOrganizationTypes = OrganizationOrganizationTypePeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(OrganizationOrganizationTypePeer.ORGANIZATION_DATA_ID, getId()); + if (!lastOrganizationOrganizationTypesCriteria.equals(criteria)) + { + collOrganizationOrganizationTypes = OrganizationOrganizationTypePeer.doSelect(criteria); + } + } + } + lastOrganizationOrganizationTypesCriteria = criteria; + + return collOrganizationOrganizationTypes; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getOrganizationOrganizationTypes(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getOrganizationOrganizationTypes(Connection con) throws TorqueException + { + if (collOrganizationOrganizationTypes == null) + { + collOrganizationOrganizationTypes = getOrganizationOrganizationTypes(new Criteria(10), con); + } + return collOrganizationOrganizationTypes; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this OrganizationData has previously + * been saved, it will retrieve related OrganizationOrganizationTypes from storage. + * If this OrganizationData is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getOrganizationOrganizationTypes(Criteria criteria, Connection con) + throws TorqueException + { + if (collOrganizationOrganizationTypes == null) + { + if (isNew()) + { + collOrganizationOrganizationTypes = new ArrayList(); + } + else + { + criteria.add(OrganizationOrganizationTypePeer.ORGANIZATION_DATA_ID, getId()); + collOrganizationOrganizationTypes = OrganizationOrganizationTypePeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(OrganizationOrganizationTypePeer.ORGANIZATION_DATA_ID, getId()); + if (!lastOrganizationOrganizationTypesCriteria.equals(criteria)) + { + collOrganizationOrganizationTypes = OrganizationOrganizationTypePeer.doSelect(criteria, con); + } + } + } + lastOrganizationOrganizationTypesCriteria = criteria; + + return collOrganizationOrganizationTypes; + } + + + + + + + + + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("Name"); + fieldNames.add("ParentOrganization"); + fieldNames.add("Divisions"); + fieldNames.add("People"); + fieldNames.add("MailingList"); + fieldNames.add("Description"); + fieldNames.add("History"); + fieldNames.add("EducationPrograms"); + fieldNames.add("Resources"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("Name")) + { + return getName(); + } + if (name.equals("ParentOrganization")) + { + return getParentOrganization(); + } + if (name.equals("Divisions")) + { + return getDivisions(); + } + if (name.equals("People")) + { + return getPeople(); + } + if (name.equals("MailingList")) + { + return getMailingList(); + } + if (name.equals("Description")) + { + return getDescription(); + } + if (name.equals("History")) + { + return getHistory(); + } + if (name.equals("EducationPrograms")) + { + return getEducationPrograms(); + } + if (name.equals("Resources")) + { + return getResources(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(OrganizationDataPeer.ID)) + { + return getId(); + } + if (name.equals(OrganizationDataPeer.NAME)) + { + return getName(); + } + if (name.equals(OrganizationDataPeer.PARENT_ORGANIZATION)) + { + return getParentOrganization(); + } + if (name.equals(OrganizationDataPeer.DIVISIONS)) + { + return getDivisions(); + } + if (name.equals(OrganizationDataPeer.PEOPLE)) + { + return getPeople(); + } + if (name.equals(OrganizationDataPeer.MAILING_LIST)) + { + return getMailingList(); + } + if (name.equals(OrganizationDataPeer.DESCRIPTION)) + { + return getDescription(); + } + if (name.equals(OrganizationDataPeer.HISTORY)) + { + return getHistory(); + } + if (name.equals(OrganizationDataPeer.EDUCATION_PROGRAMS)) + { + return getEducationPrograms(); + } + if (name.equals(OrganizationDataPeer.RESOURCES)) + { + return getResources(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getName(); + } + if (pos == 2) + { + return getParentOrganization(); + } + if (pos == 3) + { + return getDivisions(); + } + if (pos == 4) + { + return getPeople(); + } + if (pos == 5) + { + return getMailingList(); + } + if (pos == 6) + { + return getDescription(); + } + if (pos == 7) + { + return getHistory(); + } + if (pos == 8) + { + return getEducationPrograms(); + } + if (pos == 9) + { + return getResources(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(OrganizationDataPeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + OrganizationDataPeer.doInsert((OrganizationData) this, con); + setNew(false); + } + else + { + OrganizationDataPeer.doUpdate((OrganizationData) this, con); + } + } + + + + if (collMembers != null) + { + for (int i = 0; i < collMembers.size(); i++) + { + ((Member) collMembers.get(i)).save(con); + } + } + + + if (collOrganizationOrganizationTypes != null) + { + for (int i = 0; i < collOrganizationOrganizationTypes.size(); i++) + { + ((OrganizationOrganizationType) collOrganizationOrganizationTypes.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public OrganizationData copy() throws TorqueException + { + return copyInto(new OrganizationData()); + } + + protected OrganizationData copyInto(OrganizationData copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setName(name); + copyObj.setParentOrganization(parent_organization); + copyObj.setDivisions(divisions); + copyObj.setPeople(people); + copyObj.setMailingList(mailing_list); + copyObj.setDescription(description); + copyObj.setHistory(history); + copyObj.setEducationPrograms(education_programs); + copyObj.setResources(resources); + + copyObj.setNew(false); + + + List v = getMembers(); + for (int i = 0; i < v.size(); i++) + { + Member obj = (Member) v.get(i); + copyObj.addMember(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + + + v = getOrganizationOrganizationTypes(); + for (int i = 0; i < v.size(); i++) + { + OrganizationOrganizationType obj = (OrganizationOrganizationType) v.get(i); + copyObj.addOrganizationOrganizationType(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public OrganizationDataPeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseOrganizationDataPeer.java b/src/java/org/thdl/roster/om/BaseOrganizationDataPeer.java new file mode 100755 index 0000000..45b681c --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseOrganizationDataPeer.java @@ -0,0 +1,826 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseOrganizationDataPeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "OrganizationData"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(OrganizationDataMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the NAME field */ + public static final String NAME; + /** the column name for the PARENT_ORGANIZATION field */ + public static final String PARENT_ORGANIZATION; + /** the column name for the DIVISIONS field */ + public static final String DIVISIONS; + /** the column name for the PEOPLE field */ + public static final String PEOPLE; + /** the column name for the MAILING_LIST field */ + public static final String MAILING_LIST; + /** the column name for the DESCRIPTION field */ + public static final String DESCRIPTION; + /** the column name for the HISTORY field */ + public static final String HISTORY; + /** the column name for the EDUCATION_PROGRAMS field */ + public static final String EDUCATION_PROGRAMS; + /** the column name for the RESOURCES field */ + public static final String RESOURCES; + + static + { + ID = "OrganizationData.ID"; + NAME = "OrganizationData.NAME"; + PARENT_ORGANIZATION = "OrganizationData.PARENT_ORGANIZATION"; + DIVISIONS = "OrganizationData.DIVISIONS"; + PEOPLE = "OrganizationData.PEOPLE"; + MAILING_LIST = "OrganizationData.MAILING_LIST"; + DESCRIPTION = "OrganizationData.DESCRIPTION"; + HISTORY = "OrganizationData.HISTORY"; + EDUCATION_PROGRAMS = "OrganizationData.EDUCATION_PROGRAMS"; + RESOURCES = "OrganizationData.RESOURCES"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(OrganizationDataMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 10; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.OrganizationData"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseOrganizationDataPeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(NAME); + criteria.addSelectColumn(PARENT_ORGANIZATION); + criteria.addSelectColumn(DIVISIONS); + criteria.addSelectColumn(PEOPLE); + criteria.addSelectColumn(MAILING_LIST); + criteria.addSelectColumn(DESCRIPTION); + criteria.addSelectColumn(HISTORY); + criteria.addSelectColumn(EDUCATION_PROGRAMS); + criteria.addSelectColumn(RESOURCES); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static OrganizationData row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + OrganizationData obj = (OrganizationData) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + OrganizationData obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setName(row.getValue(offset + 1).asString()); + obj.setParentOrganization(row.getValue(offset + 2).asString()); + obj.setDivisions(row.getValue(offset + 3).asString()); + obj.setPeople(row.getValue(offset + 4).asString()); + obj.setMailingList(row.getValue(offset + 5).asString()); + obj.setDescription(row.getValue(offset + 6).asString()); + obj.setHistory(row.getValue(offset + 7).asString()); + obj.setEducationPrograms(row.getValue(offset + 8).asString()); + obj.setResources(row.getValue(offset + 9).asString()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseOrganizationDataPeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(OrganizationDataPeer.row2Object(row, 1, + OrganizationDataPeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseOrganizationDataPeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseOrganizationDataPeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(OrganizationData obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(OrganizationData obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(OrganizationData obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(OrganizationData obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(OrganizationData) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(OrganizationData obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(OrganizationData) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(OrganizationData obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(OrganizationData) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(OrganizationData obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseOrganizationDataPeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( OrganizationData obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(NAME, obj.getName()); + criteria.add(PARENT_ORGANIZATION, obj.getParentOrganization()); + criteria.add(DIVISIONS, obj.getDivisions()); + criteria.add(PEOPLE, obj.getPeople()); + criteria.add(MAILING_LIST, obj.getMailingList()); + criteria.add(DESCRIPTION, obj.getDescription()); + criteria.add(HISTORY, obj.getHistory()); + criteria.add(EDUCATION_PROGRAMS, obj.getEducationPrograms()); + criteria.add(RESOURCES, obj.getResources()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static OrganizationData retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static OrganizationData retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + OrganizationData retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static OrganizationData retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (OrganizationData)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseOrganizationOrganizationType.java b/src/java/org/thdl/roster/om/BaseOrganizationOrganizationType.java new file mode 100755 index 0000000..571c591 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseOrganizationOrganizationType.java @@ -0,0 +1,584 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to OrganizationOrganizationType + */ +public abstract class BaseOrganizationOrganizationType extends BaseObject +{ + /** The Peer class */ + private static final OrganizationOrganizationTypePeer peer = + new OrganizationOrganizationTypePeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the organization_type_id field + */ + private Integer organization_type_id; + + /** + * The value for the organization_data_id field + */ + private Integer organization_data_id; + + /** + * The value for the relevance field + */ + private Integer relevance; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + } + + + /** + * Get the OrganizationTypeId + * + * @return Integer + */ + public Integer getOrganizationTypeId() + { + return organization_type_id; + } + + + /** + * Set the value of OrganizationTypeId + * + * @param v new value + */ + public void setOrganizationTypeId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.organization_type_id, v)) + { + this.organization_type_id = v; + setModified(true); + } + + + if (aOrganizationType != null && !ObjectUtils.equals(aOrganizationType.getId(), v)) + { + aOrganizationType = null; + } + + } + + + /** + * Get the OrganizationDataId + * + * @return Integer + */ + public Integer getOrganizationDataId() + { + return organization_data_id; + } + + + /** + * Set the value of OrganizationDataId + * + * @param v new value + */ + public void setOrganizationDataId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.organization_data_id, v)) + { + this.organization_data_id = v; + setModified(true); + } + + + if (aOrganizationData != null && !ObjectUtils.equals(aOrganizationData.getId(), v)) + { + aOrganizationData = null; + } + + } + + + /** + * Get the Relevance + * + * @return Integer + */ + public Integer getRelevance() + { + return relevance; + } + + + /** + * Set the value of Relevance + * + * @param v new value + */ + public void setRelevance(Integer v) + { + + + + if (!ObjectUtils.equals(this.relevance, v)) + { + this.relevance = v; + setModified(true); + } + + + } + + + + + + + + private OrganizationData aOrganizationData; + + /** + * Declares an association between this object and a OrganizationData object + * + * @param v OrganizationData + * @throws TorqueException + */ + public void setOrganizationData(OrganizationData v) throws TorqueException + { + if (v == null) + { + setOrganizationDataId((Integer)null); + } + else + { + setOrganizationDataId(v.getId()); + } + aOrganizationData = v; + } + + + /** + * Get the associated OrganizationData object + * + * @return the associated OrganizationData object + * @throws TorqueException + */ + public OrganizationData getOrganizationData() throws TorqueException + { + if (aOrganizationData == null && (!ObjectUtils.equals(this.organization_data_id, null))) + { + aOrganizationData = OrganizationDataPeer.retrieveByPK(SimpleKey.keyFor(this.organization_data_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + OrganizationData obj = OrganizationDataPeer.retrieveByPK(this.organization_data_id); + obj.addOrganizationOrganizationTypes(this); + */ + } + return aOrganizationData; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setOrganizationDataKey(ObjectKey key) throws TorqueException + { + + setOrganizationDataId(new Integer(((NumberKey) key).intValue())); + } + + + + + private OrganizationType aOrganizationType; + + /** + * Declares an association between this object and a OrganizationType object + * + * @param v OrganizationType + * @throws TorqueException + */ + public void setOrganizationType(OrganizationType v) throws TorqueException + { + if (v == null) + { + setOrganizationTypeId((Integer)null); + } + else + { + setOrganizationTypeId(v.getId()); + } + aOrganizationType = v; + } + + + /** + * Get the associated OrganizationType object + * + * @return the associated OrganizationType object + * @throws TorqueException + */ + public OrganizationType getOrganizationType() throws TorqueException + { + if (aOrganizationType == null && (!ObjectUtils.equals(this.organization_type_id, null))) + { + aOrganizationType = OrganizationTypePeer.retrieveByPK(SimpleKey.keyFor(this.organization_type_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + OrganizationType obj = OrganizationTypePeer.retrieveByPK(this.organization_type_id); + obj.addOrganizationOrganizationTypes(this); + */ + } + return aOrganizationType; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setOrganizationTypeKey(ObjectKey key) throws TorqueException + { + + setOrganizationTypeId(new Integer(((NumberKey) key).intValue())); + } + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("OrganizationTypeId"); + fieldNames.add("OrganizationDataId"); + fieldNames.add("Relevance"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("OrganizationTypeId")) + { + return getOrganizationTypeId(); + } + if (name.equals("OrganizationDataId")) + { + return getOrganizationDataId(); + } + if (name.equals("Relevance")) + { + return getRelevance(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(OrganizationOrganizationTypePeer.ID)) + { + return getId(); + } + if (name.equals(OrganizationOrganizationTypePeer.ORGANIZATION_TYPE_ID)) + { + return getOrganizationTypeId(); + } + if (name.equals(OrganizationOrganizationTypePeer.ORGANIZATION_DATA_ID)) + { + return getOrganizationDataId(); + } + if (name.equals(OrganizationOrganizationTypePeer.RELEVANCE)) + { + return getRelevance(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getOrganizationTypeId(); + } + if (pos == 2) + { + return getOrganizationDataId(); + } + if (pos == 3) + { + return getRelevance(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(OrganizationOrganizationTypePeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + OrganizationOrganizationTypePeer.doInsert((OrganizationOrganizationType) this, con); + setNew(false); + } + else + { + OrganizationOrganizationTypePeer.doUpdate((OrganizationOrganizationType) this, con); + } + } + + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public OrganizationOrganizationType copy() throws TorqueException + { + return copyInto(new OrganizationOrganizationType()); + } + + protected OrganizationOrganizationType copyInto(OrganizationOrganizationType copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setOrganizationTypeId(organization_type_id); + copyObj.setOrganizationDataId(organization_data_id); + copyObj.setRelevance(relevance); + + copyObj.setNew(false); + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public OrganizationOrganizationTypePeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseOrganizationOrganizationTypePeer.java b/src/java/org/thdl/roster/om/BaseOrganizationOrganizationTypePeer.java new file mode 100755 index 0000000..8a7521b --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseOrganizationOrganizationTypePeer.java @@ -0,0 +1,946 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseOrganizationOrganizationTypePeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "OrganizationOrganizationType"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(OrganizationOrganizationTypeMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the ORGANIZATION_TYPE_ID field */ + public static final String ORGANIZATION_TYPE_ID; + /** the column name for the ORGANIZATION_DATA_ID field */ + public static final String ORGANIZATION_DATA_ID; + /** the column name for the RELEVANCE field */ + public static final String RELEVANCE; + + static + { + ID = "OrganizationOrganizationType.ID"; + ORGANIZATION_TYPE_ID = "OrganizationOrganizationType.ORGANIZATION_TYPE_ID"; + ORGANIZATION_DATA_ID = "OrganizationOrganizationType.ORGANIZATION_DATA_ID"; + RELEVANCE = "OrganizationOrganizationType.RELEVANCE"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(OrganizationOrganizationTypeMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 4; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.OrganizationOrganizationType"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseOrganizationOrganizationTypePeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(ORGANIZATION_TYPE_ID); + criteria.addSelectColumn(ORGANIZATION_DATA_ID); + criteria.addSelectColumn(RELEVANCE); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static OrganizationOrganizationType row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + OrganizationOrganizationType obj = (OrganizationOrganizationType) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + OrganizationOrganizationType obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setOrganizationTypeId(row.getValue(offset + 1).asIntegerObj()); + obj.setOrganizationDataId(row.getValue(offset + 2).asIntegerObj()); + obj.setRelevance(row.getValue(offset + 3).asIntegerObj()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseOrganizationOrganizationTypePeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(OrganizationOrganizationTypePeer.row2Object(row, 1, + OrganizationOrganizationTypePeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseOrganizationOrganizationTypePeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseOrganizationOrganizationTypePeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(OrganizationOrganizationType obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(OrganizationOrganizationType obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(OrganizationOrganizationType obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(OrganizationOrganizationType obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(OrganizationOrganizationType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(OrganizationOrganizationType obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(OrganizationOrganizationType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(OrganizationOrganizationType obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(OrganizationOrganizationType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(OrganizationOrganizationType obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseOrganizationOrganizationTypePeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( OrganizationOrganizationType obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(ORGANIZATION_TYPE_ID, obj.getOrganizationTypeId()); + criteria.add(ORGANIZATION_DATA_ID, obj.getOrganizationDataId()); + criteria.add(RELEVANCE, obj.getRelevance()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static OrganizationOrganizationType retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static OrganizationOrganizationType retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + OrganizationOrganizationType retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static OrganizationOrganizationType retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (OrganizationOrganizationType)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + + + /** + * selects a collection of OrganizationOrganizationType objects pre-filled with their + * OrganizationData objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in OrganizationOrganizationTypePeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinOrganizationData(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + OrganizationOrganizationTypePeer.addSelectColumns(c); + int offset = numColumns + 1; + OrganizationDataPeer.addSelectColumns(c); + + + c.addJoin(OrganizationOrganizationTypePeer.ORGANIZATION_DATA_ID, + OrganizationDataPeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = OrganizationOrganizationTypePeer.getOMClass(); + + OrganizationOrganizationType obj1 = (OrganizationOrganizationType) OrganizationOrganizationTypePeer + .row2Object(row, 1, omClass); + + + omClass = OrganizationDataPeer.getOMClass(); + OrganizationData obj2 = (OrganizationData)OrganizationDataPeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + OrganizationOrganizationType temp_obj1 = (OrganizationOrganizationType)results.get(j); + OrganizationData temp_obj2 = (OrganizationData)temp_obj1.getOrganizationData(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addOrganizationOrganizationType(obj1); + break; + } + } + if (newObject) + { + obj2.initOrganizationOrganizationTypes(); + obj2.addOrganizationOrganizationType(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + + /** + * selects a collection of OrganizationOrganizationType objects pre-filled with their + * OrganizationType objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in OrganizationOrganizationTypePeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinOrganizationType(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + OrganizationOrganizationTypePeer.addSelectColumns(c); + int offset = numColumns + 1; + OrganizationTypePeer.addSelectColumns(c); + + + c.addJoin(OrganizationOrganizationTypePeer.ORGANIZATION_TYPE_ID, + OrganizationTypePeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = OrganizationOrganizationTypePeer.getOMClass(); + + OrganizationOrganizationType obj1 = (OrganizationOrganizationType) OrganizationOrganizationTypePeer + .row2Object(row, 1, omClass); + + + omClass = OrganizationTypePeer.getOMClass(); + OrganizationType obj2 = (OrganizationType)OrganizationTypePeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + OrganizationOrganizationType temp_obj1 = (OrganizationOrganizationType)results.get(j); + OrganizationType temp_obj2 = (OrganizationType)temp_obj1.getOrganizationType(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addOrganizationOrganizationType(obj1); + break; + } + } + if (newObject) + { + obj2.initOrganizationOrganizationTypes(); + obj2.addOrganizationOrganizationType(obj1); + } + results.add(obj1); + } + return results; + } + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseOrganizationType.java b/src/java/org/thdl/roster/om/BaseOrganizationType.java new file mode 100755 index 0000000..1b488e5 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseOrganizationType.java @@ -0,0 +1,561 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to OrganizationType + */ +public abstract class BaseOrganizationType extends BaseObject +{ + /** The Peer class */ + private static final OrganizationTypePeer peer = + new OrganizationTypePeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the organization_type field + */ + private String organization_type; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + + // update associated OrganizationOrganizationType + if (collOrganizationOrganizationTypes != null) + { + for (int i = 0; i < collOrganizationOrganizationTypes.size(); i++) + { + ((OrganizationOrganizationType) collOrganizationOrganizationTypes.get(i)) + .setOrganizationTypeId(v); + } + } + } + + + /** + * Get the OrganizationType + * + * @return String + */ + public String getOrganizationType() + { + return organization_type; + } + + + /** + * Set the value of OrganizationType + * + * @param v new value + */ + public void setOrganizationType(String v) + { + + + + if (!ObjectUtils.equals(this.organization_type, v)) + { + this.organization_type = v; + setModified(true); + } + + + } + + + + + + + /** + * Collection to store aggregation of collOrganizationOrganizationTypes + */ + protected List collOrganizationOrganizationTypes; + + /** + * Temporary storage of collOrganizationOrganizationTypes to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initOrganizationOrganizationTypes() + { + if (collOrganizationOrganizationTypes == null) + { + collOrganizationOrganizationTypes = new ArrayList(); + } + } + + /** + * Method called to associate a OrganizationOrganizationType object to this object + * through the OrganizationOrganizationType foreign key attribute + * + * @param l OrganizationOrganizationType + * @throws TorqueException + */ + public void addOrganizationOrganizationType(OrganizationOrganizationType l) throws TorqueException + { + getOrganizationOrganizationTypes().add(l); + l.setOrganizationType((OrganizationType) this); + } + + /** + * The criteria used to select the current contents of collOrganizationOrganizationTypes + */ + private Criteria lastOrganizationOrganizationTypesCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getOrganizationOrganizationTypes(new Criteria()) + * + * @throws TorqueException + */ + public List getOrganizationOrganizationTypes() throws TorqueException + { + if (collOrganizationOrganizationTypes == null) + { + collOrganizationOrganizationTypes = getOrganizationOrganizationTypes(new Criteria(10)); + } + return collOrganizationOrganizationTypes; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this OrganizationType has previously + * been saved, it will retrieve related OrganizationOrganizationTypes from storage. + * If this OrganizationType is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getOrganizationOrganizationTypes(Criteria criteria) throws TorqueException + { + if (collOrganizationOrganizationTypes == null) + { + if (isNew()) + { + collOrganizationOrganizationTypes = new ArrayList(); + } + else + { + criteria.add(OrganizationOrganizationTypePeer.ORGANIZATION_TYPE_ID, getId() ); + collOrganizationOrganizationTypes = OrganizationOrganizationTypePeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(OrganizationOrganizationTypePeer.ORGANIZATION_TYPE_ID, getId()); + if (!lastOrganizationOrganizationTypesCriteria.equals(criteria)) + { + collOrganizationOrganizationTypes = OrganizationOrganizationTypePeer.doSelect(criteria); + } + } + } + lastOrganizationOrganizationTypesCriteria = criteria; + + return collOrganizationOrganizationTypes; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getOrganizationOrganizationTypes(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getOrganizationOrganizationTypes(Connection con) throws TorqueException + { + if (collOrganizationOrganizationTypes == null) + { + collOrganizationOrganizationTypes = getOrganizationOrganizationTypes(new Criteria(10), con); + } + return collOrganizationOrganizationTypes; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this OrganizationType has previously + * been saved, it will retrieve related OrganizationOrganizationTypes from storage. + * If this OrganizationType is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getOrganizationOrganizationTypes(Criteria criteria, Connection con) + throws TorqueException + { + if (collOrganizationOrganizationTypes == null) + { + if (isNew()) + { + collOrganizationOrganizationTypes = new ArrayList(); + } + else + { + criteria.add(OrganizationOrganizationTypePeer.ORGANIZATION_TYPE_ID, getId()); + collOrganizationOrganizationTypes = OrganizationOrganizationTypePeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(OrganizationOrganizationTypePeer.ORGANIZATION_TYPE_ID, getId()); + if (!lastOrganizationOrganizationTypesCriteria.equals(criteria)) + { + collOrganizationOrganizationTypes = OrganizationOrganizationTypePeer.doSelect(criteria, con); + } + } + } + lastOrganizationOrganizationTypesCriteria = criteria; + + return collOrganizationOrganizationTypes; + } + + + + + + + + + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("OrganizationType"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("OrganizationType")) + { + return getOrganizationType(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(OrganizationTypePeer.ID)) + { + return getId(); + } + if (name.equals(OrganizationTypePeer.ORGANIZATION_TYPE)) + { + return getOrganizationType(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getOrganizationType(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(OrganizationTypePeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + OrganizationTypePeer.doInsert((OrganizationType) this, con); + setNew(false); + } + else + { + OrganizationTypePeer.doUpdate((OrganizationType) this, con); + } + } + + + + if (collOrganizationOrganizationTypes != null) + { + for (int i = 0; i < collOrganizationOrganizationTypes.size(); i++) + { + ((OrganizationOrganizationType) collOrganizationOrganizationTypes.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public OrganizationType copy() throws TorqueException + { + return copyInto(new OrganizationType()); + } + + protected OrganizationType copyInto(OrganizationType copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setOrganizationType(organization_type); + + copyObj.setNew(false); + + + List v = getOrganizationOrganizationTypes(); + for (int i = 0; i < v.size(); i++) + { + OrganizationOrganizationType obj = (OrganizationOrganizationType) v.get(i); + copyObj.addOrganizationOrganizationType(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public OrganizationTypePeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseOrganizationTypePeer.java b/src/java/org/thdl/roster/om/BaseOrganizationTypePeer.java new file mode 100755 index 0000000..9b315b0 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseOrganizationTypePeer.java @@ -0,0 +1,778 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseOrganizationTypePeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "OrganizationType"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(OrganizationTypeMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the ORGANIZATION_TYPE field */ + public static final String ORGANIZATION_TYPE; + + static + { + ID = "OrganizationType.ID"; + ORGANIZATION_TYPE = "OrganizationType.ORGANIZATION_TYPE"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(OrganizationTypeMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 2; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.OrganizationType"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseOrganizationTypePeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(ORGANIZATION_TYPE); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static OrganizationType row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + OrganizationType obj = (OrganizationType) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + OrganizationType obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setOrganizationType(row.getValue(offset + 1).asString()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseOrganizationTypePeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(OrganizationTypePeer.row2Object(row, 1, + OrganizationTypePeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseOrganizationTypePeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseOrganizationTypePeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(OrganizationType obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(OrganizationType obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(OrganizationType obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(OrganizationType obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(OrganizationType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(OrganizationType obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(OrganizationType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(OrganizationType obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(OrganizationType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(OrganizationType obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseOrganizationTypePeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( OrganizationType obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(ORGANIZATION_TYPE, obj.getOrganizationType()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static OrganizationType retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static OrganizationType retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + OrganizationType retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static OrganizationType retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (OrganizationType)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BasePersonData.java b/src/java/org/thdl/roster/om/BasePersonData.java new file mode 100755 index 0000000..2aa2791 --- /dev/null +++ b/src/java/org/thdl/roster/om/BasePersonData.java @@ -0,0 +1,1756 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to PersonData + */ +public abstract class BasePersonData extends BaseObject +{ + /** The Peer class */ + private static final PersonDataPeer peer = + new PersonDataPeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the thdl_user_id field + */ + private Integer thdl_user_id; + + /** + * The value for the firstname field + */ + private String firstname; + + /** + * The value for the middlename field + */ + private String middlename; + + /** + * The value for the lastname field + */ + private String lastname; + + /** + * The value for the bio field + */ + private String bio; + + /** + * The value for the history field + */ + private String history; + + /** + * The value for the parent_organization field + */ + private String parent_organization; + + /** + * The value for the school field + */ + private String school; + + /** + * The value for the department field + */ + private String department; + + /** + * The value for the program field + */ + private String program; + + /** + * The value for the advisor field + */ + private String advisor; + + /** + * The value for the highest_degree field + */ + private String highest_degree; + + /** + * The value for the year_began field + */ + private Integer year_began; + + /** + * The value for the year_finished field + */ + private Integer year_finished; + + /** + * The value for the other_backgrounds field + */ + private String other_backgrounds; + + /** + * The value for the organization field + */ + private String organization; + + /** + * The value for the division field + */ + private String division; + + /** + * The value for the title field + */ + private String title; + + /** + * The value for the start_date field + */ + private Integer start_date; + + /** + * The value for the job_description field + */ + private String job_description; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + + // update associated Member + if (collMembers != null) + { + for (int i = 0; i < collMembers.size(); i++) + { + ((Member) collMembers.get(i)) + .setPersonDataId(v); + } + } + + // update associated PersonPersonType + if (collPersonPersonTypes != null) + { + for (int i = 0; i < collPersonPersonTypes.size(); i++) + { + ((PersonPersonType) collPersonPersonTypes.get(i)) + .setPersonDataId(v); + } + } + } + + + /** + * Get the ThdlUserId + * + * @return Integer + */ + public Integer getThdlUserId() + { + return thdl_user_id; + } + + + /** + * Set the value of ThdlUserId + * + * @param v new value + */ + public void setThdlUserId(Integer v) + { + + + + if (!ObjectUtils.equals(this.thdl_user_id, v)) + { + this.thdl_user_id = v; + setModified(true); + } + + + } + + + /** + * Get the Firstname + * + * @return String + */ + public String getFirstname() + { + return firstname; + } + + + /** + * Set the value of Firstname + * + * @param v new value + */ + public void setFirstname(String v) + { + + + + if (!ObjectUtils.equals(this.firstname, v)) + { + this.firstname = v; + setModified(true); + } + + + } + + + /** + * Get the Middlename + * + * @return String + */ + public String getMiddlename() + { + return middlename; + } + + + /** + * Set the value of Middlename + * + * @param v new value + */ + public void setMiddlename(String v) + { + + + + if (!ObjectUtils.equals(this.middlename, v)) + { + this.middlename = v; + setModified(true); + } + + + } + + + /** + * Get the Lastname + * + * @return String + */ + public String getLastname() + { + return lastname; + } + + + /** + * Set the value of Lastname + * + * @param v new value + */ + public void setLastname(String v) + { + + + + if (!ObjectUtils.equals(this.lastname, v)) + { + this.lastname = v; + setModified(true); + } + + + } + + + /** + * Get the Bio + * + * @return String + */ + public String getBio() + { + return bio; + } + + + /** + * Set the value of Bio + * + * @param v new value + */ + public void setBio(String v) + { + + + + if (!ObjectUtils.equals(this.bio, v)) + { + this.bio = v; + setModified(true); + } + + + } + + + /** + * Get the History + * + * @return String + */ + public String getHistory() + { + return history; + } + + + /** + * Set the value of History + * + * @param v new value + */ + public void setHistory(String v) + { + + + + if (!ObjectUtils.equals(this.history, v)) + { + this.history = v; + setModified(true); + } + + + } + + + /** + * Get the ParentOrganization + * + * @return String + */ + public String getParentOrganization() + { + return parent_organization; + } + + + /** + * Set the value of ParentOrganization + * + * @param v new value + */ + public void setParentOrganization(String v) + { + + + + if (!ObjectUtils.equals(this.parent_organization, v)) + { + this.parent_organization = v; + setModified(true); + } + + + } + + + /** + * Get the School + * + * @return String + */ + public String getSchool() + { + return school; + } + + + /** + * Set the value of School + * + * @param v new value + */ + public void setSchool(String v) + { + + + + if (!ObjectUtils.equals(this.school, v)) + { + this.school = v; + setModified(true); + } + + + } + + + /** + * Get the Department + * + * @return String + */ + public String getDepartment() + { + return department; + } + + + /** + * Set the value of Department + * + * @param v new value + */ + public void setDepartment(String v) + { + + + + if (!ObjectUtils.equals(this.department, v)) + { + this.department = v; + setModified(true); + } + + + } + + + /** + * Get the Program + * + * @return String + */ + public String getProgram() + { + return program; + } + + + /** + * Set the value of Program + * + * @param v new value + */ + public void setProgram(String v) + { + + + + if (!ObjectUtils.equals(this.program, v)) + { + this.program = v; + setModified(true); + } + + + } + + + /** + * Get the Advisor + * + * @return String + */ + public String getAdvisor() + { + return advisor; + } + + + /** + * Set the value of Advisor + * + * @param v new value + */ + public void setAdvisor(String v) + { + + + + if (!ObjectUtils.equals(this.advisor, v)) + { + this.advisor = v; + setModified(true); + } + + + } + + + /** + * Get the HighestDegree + * + * @return String + */ + public String getHighestDegree() + { + return highest_degree; + } + + + /** + * Set the value of HighestDegree + * + * @param v new value + */ + public void setHighestDegree(String v) + { + + + + if (!ObjectUtils.equals(this.highest_degree, v)) + { + this.highest_degree = v; + setModified(true); + } + + + } + + + /** + * Get the YearBegan + * + * @return Integer + */ + public Integer getYearBegan() + { + return year_began; + } + + + /** + * Set the value of YearBegan + * + * @param v new value + */ + public void setYearBegan(Integer v) + { + + + + if (!ObjectUtils.equals(this.year_began, v)) + { + this.year_began = v; + setModified(true); + } + + + } + + + /** + * Get the YearFinished + * + * @return Integer + */ + public Integer getYearFinished() + { + return year_finished; + } + + + /** + * Set the value of YearFinished + * + * @param v new value + */ + public void setYearFinished(Integer v) + { + + + + if (!ObjectUtils.equals(this.year_finished, v)) + { + this.year_finished = v; + setModified(true); + } + + + } + + + /** + * Get the OtherBackgrounds + * + * @return String + */ + public String getOtherBackgrounds() + { + return other_backgrounds; + } + + + /** + * Set the value of OtherBackgrounds + * + * @param v new value + */ + public void setOtherBackgrounds(String v) + { + + + + if (!ObjectUtils.equals(this.other_backgrounds, v)) + { + this.other_backgrounds = v; + setModified(true); + } + + + } + + + /** + * Get the Organization + * + * @return String + */ + public String getOrganization() + { + return organization; + } + + + /** + * Set the value of Organization + * + * @param v new value + */ + public void setOrganization(String v) + { + + + + if (!ObjectUtils.equals(this.organization, v)) + { + this.organization = v; + setModified(true); + } + + + } + + + /** + * Get the Division + * + * @return String + */ + public String getDivision() + { + return division; + } + + + /** + * Set the value of Division + * + * @param v new value + */ + public void setDivision(String v) + { + + + + if (!ObjectUtils.equals(this.division, v)) + { + this.division = v; + setModified(true); + } + + + } + + + /** + * Get the Title + * + * @return String + */ + public String getTitle() + { + return title; + } + + + /** + * Set the value of Title + * + * @param v new value + */ + public void setTitle(String v) + { + + + + if (!ObjectUtils.equals(this.title, v)) + { + this.title = v; + setModified(true); + } + + + } + + + /** + * Get the StartDate + * + * @return Integer + */ + public Integer getStartDate() + { + return start_date; + } + + + /** + * Set the value of StartDate + * + * @param v new value + */ + public void setStartDate(Integer v) + { + + + + if (!ObjectUtils.equals(this.start_date, v)) + { + this.start_date = v; + setModified(true); + } + + + } + + + /** + * Get the JobDescription + * + * @return String + */ + public String getJobDescription() + { + return job_description; + } + + + /** + * Set the value of JobDescription + * + * @param v new value + */ + public void setJobDescription(String v) + { + + + + if (!ObjectUtils.equals(this.job_description, v)) + { + this.job_description = v; + setModified(true); + } + + + } + + + + + + + /** + * Collection to store aggregation of collMembers + */ + protected List collMembers; + + /** + * Temporary storage of collMembers to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initMembers() + { + if (collMembers == null) + { + collMembers = new ArrayList(); + } + } + + /** + * Method called to associate a Member object to this object + * through the Member foreign key attribute + * + * @param l Member + * @throws TorqueException + */ + public void addMember(Member l) throws TorqueException + { + getMembers().add(l); + l.setPersonData((PersonData) this); + } + + /** + * The criteria used to select the current contents of collMembers + */ + private Criteria lastMembersCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getMembers(new Criteria()) + * + * @throws TorqueException + */ + public List getMembers() throws TorqueException + { + if (collMembers == null) + { + collMembers = getMembers(new Criteria(10)); + } + return collMembers; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this PersonData has previously + * been saved, it will retrieve related Members from storage. + * If this PersonData is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getMembers(Criteria criteria) throws TorqueException + { + if (collMembers == null) + { + if (isNew()) + { + collMembers = new ArrayList(); + } + else + { + criteria.add(MemberPeer.PERSON_DATA_ID, getId() ); + collMembers = MemberPeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(MemberPeer.PERSON_DATA_ID, getId()); + if (!lastMembersCriteria.equals(criteria)) + { + collMembers = MemberPeer.doSelect(criteria); + } + } + } + lastMembersCriteria = criteria; + + return collMembers; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getMembers(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getMembers(Connection con) throws TorqueException + { + if (collMembers == null) + { + collMembers = getMembers(new Criteria(10), con); + } + return collMembers; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this PersonData has previously + * been saved, it will retrieve related Members from storage. + * If this PersonData is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getMembers(Criteria criteria, Connection con) + throws TorqueException + { + if (collMembers == null) + { + if (isNew()) + { + collMembers = new ArrayList(); + } + else + { + criteria.add(MemberPeer.PERSON_DATA_ID, getId()); + collMembers = MemberPeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(MemberPeer.PERSON_DATA_ID, getId()); + if (!lastMembersCriteria.equals(criteria)) + { + collMembers = MemberPeer.doSelect(criteria, con); + } + } + } + lastMembersCriteria = criteria; + + return collMembers; + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /** + * Collection to store aggregation of collPersonPersonTypes + */ + protected List collPersonPersonTypes; + + /** + * Temporary storage of collPersonPersonTypes to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initPersonPersonTypes() + { + if (collPersonPersonTypes == null) + { + collPersonPersonTypes = new ArrayList(); + } + } + + /** + * Method called to associate a PersonPersonType object to this object + * through the PersonPersonType foreign key attribute + * + * @param l PersonPersonType + * @throws TorqueException + */ + public void addPersonPersonType(PersonPersonType l) throws TorqueException + { + getPersonPersonTypes().add(l); + l.setPersonData((PersonData) this); + } + + /** + * The criteria used to select the current contents of collPersonPersonTypes + */ + private Criteria lastPersonPersonTypesCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getPersonPersonTypes(new Criteria()) + * + * @throws TorqueException + */ + public List getPersonPersonTypes() throws TorqueException + { + if (collPersonPersonTypes == null) + { + collPersonPersonTypes = getPersonPersonTypes(new Criteria(10)); + } + return collPersonPersonTypes; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this PersonData has previously + * been saved, it will retrieve related PersonPersonTypes from storage. + * If this PersonData is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getPersonPersonTypes(Criteria criteria) throws TorqueException + { + if (collPersonPersonTypes == null) + { + if (isNew()) + { + collPersonPersonTypes = new ArrayList(); + } + else + { + criteria.add(PersonPersonTypePeer.PERSON_DATA_ID, getId() ); + collPersonPersonTypes = PersonPersonTypePeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(PersonPersonTypePeer.PERSON_DATA_ID, getId()); + if (!lastPersonPersonTypesCriteria.equals(criteria)) + { + collPersonPersonTypes = PersonPersonTypePeer.doSelect(criteria); + } + } + } + lastPersonPersonTypesCriteria = criteria; + + return collPersonPersonTypes; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getPersonPersonTypes(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getPersonPersonTypes(Connection con) throws TorqueException + { + if (collPersonPersonTypes == null) + { + collPersonPersonTypes = getPersonPersonTypes(new Criteria(10), con); + } + return collPersonPersonTypes; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this PersonData has previously + * been saved, it will retrieve related PersonPersonTypes from storage. + * If this PersonData is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getPersonPersonTypes(Criteria criteria, Connection con) + throws TorqueException + { + if (collPersonPersonTypes == null) + { + if (isNew()) + { + collPersonPersonTypes = new ArrayList(); + } + else + { + criteria.add(PersonPersonTypePeer.PERSON_DATA_ID, getId()); + collPersonPersonTypes = PersonPersonTypePeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(PersonPersonTypePeer.PERSON_DATA_ID, getId()); + if (!lastPersonPersonTypesCriteria.equals(criteria)) + { + collPersonPersonTypes = PersonPersonTypePeer.doSelect(criteria, con); + } + } + } + lastPersonPersonTypesCriteria = criteria; + + return collPersonPersonTypes; + } + + + + + + + + + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("ThdlUserId"); + fieldNames.add("Firstname"); + fieldNames.add("Middlename"); + fieldNames.add("Lastname"); + fieldNames.add("Bio"); + fieldNames.add("History"); + fieldNames.add("ParentOrganization"); + fieldNames.add("School"); + fieldNames.add("Department"); + fieldNames.add("Program"); + fieldNames.add("Advisor"); + fieldNames.add("HighestDegree"); + fieldNames.add("YearBegan"); + fieldNames.add("YearFinished"); + fieldNames.add("OtherBackgrounds"); + fieldNames.add("Organization"); + fieldNames.add("Division"); + fieldNames.add("Title"); + fieldNames.add("StartDate"); + fieldNames.add("JobDescription"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("ThdlUserId")) + { + return getThdlUserId(); + } + if (name.equals("Firstname")) + { + return getFirstname(); + } + if (name.equals("Middlename")) + { + return getMiddlename(); + } + if (name.equals("Lastname")) + { + return getLastname(); + } + if (name.equals("Bio")) + { + return getBio(); + } + if (name.equals("History")) + { + return getHistory(); + } + if (name.equals("ParentOrganization")) + { + return getParentOrganization(); + } + if (name.equals("School")) + { + return getSchool(); + } + if (name.equals("Department")) + { + return getDepartment(); + } + if (name.equals("Program")) + { + return getProgram(); + } + if (name.equals("Advisor")) + { + return getAdvisor(); + } + if (name.equals("HighestDegree")) + { + return getHighestDegree(); + } + if (name.equals("YearBegan")) + { + return getYearBegan(); + } + if (name.equals("YearFinished")) + { + return getYearFinished(); + } + if (name.equals("OtherBackgrounds")) + { + return getOtherBackgrounds(); + } + if (name.equals("Organization")) + { + return getOrganization(); + } + if (name.equals("Division")) + { + return getDivision(); + } + if (name.equals("Title")) + { + return getTitle(); + } + if (name.equals("StartDate")) + { + return getStartDate(); + } + if (name.equals("JobDescription")) + { + return getJobDescription(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(PersonDataPeer.ID)) + { + return getId(); + } + if (name.equals(PersonDataPeer.THDL_USER_ID)) + { + return getThdlUserId(); + } + if (name.equals(PersonDataPeer.FIRSTNAME)) + { + return getFirstname(); + } + if (name.equals(PersonDataPeer.MIDDLENAME)) + { + return getMiddlename(); + } + if (name.equals(PersonDataPeer.LASTNAME)) + { + return getLastname(); + } + if (name.equals(PersonDataPeer.BIO)) + { + return getBio(); + } + if (name.equals(PersonDataPeer.HISTORY)) + { + return getHistory(); + } + if (name.equals(PersonDataPeer.PARENT_ORGANIZATION)) + { + return getParentOrganization(); + } + if (name.equals(PersonDataPeer.SCHOOL)) + { + return getSchool(); + } + if (name.equals(PersonDataPeer.DEPARTMENT)) + { + return getDepartment(); + } + if (name.equals(PersonDataPeer.PROGRAM)) + { + return getProgram(); + } + if (name.equals(PersonDataPeer.ADVISOR)) + { + return getAdvisor(); + } + if (name.equals(PersonDataPeer.HIGHEST_DEGREE)) + { + return getHighestDegree(); + } + if (name.equals(PersonDataPeer.YEAR_BEGAN)) + { + return getYearBegan(); + } + if (name.equals(PersonDataPeer.YEAR_FINISHED)) + { + return getYearFinished(); + } + if (name.equals(PersonDataPeer.OTHER_BACKGROUNDS)) + { + return getOtherBackgrounds(); + } + if (name.equals(PersonDataPeer.ORGANIZATION)) + { + return getOrganization(); + } + if (name.equals(PersonDataPeer.DIVISION)) + { + return getDivision(); + } + if (name.equals(PersonDataPeer.TITLE)) + { + return getTitle(); + } + if (name.equals(PersonDataPeer.START_DATE)) + { + return getStartDate(); + } + if (name.equals(PersonDataPeer.JOB_DESCRIPTION)) + { + return getJobDescription(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getThdlUserId(); + } + if (pos == 2) + { + return getFirstname(); + } + if (pos == 3) + { + return getMiddlename(); + } + if (pos == 4) + { + return getLastname(); + } + if (pos == 5) + { + return getBio(); + } + if (pos == 6) + { + return getHistory(); + } + if (pos == 7) + { + return getParentOrganization(); + } + if (pos == 8) + { + return getSchool(); + } + if (pos == 9) + { + return getDepartment(); + } + if (pos == 10) + { + return getProgram(); + } + if (pos == 11) + { + return getAdvisor(); + } + if (pos == 12) + { + return getHighestDegree(); + } + if (pos == 13) + { + return getYearBegan(); + } + if (pos == 14) + { + return getYearFinished(); + } + if (pos == 15) + { + return getOtherBackgrounds(); + } + if (pos == 16) + { + return getOrganization(); + } + if (pos == 17) + { + return getDivision(); + } + if (pos == 18) + { + return getTitle(); + } + if (pos == 19) + { + return getStartDate(); + } + if (pos == 20) + { + return getJobDescription(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(PersonDataPeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + PersonDataPeer.doInsert((PersonData) this, con); + setNew(false); + } + else + { + PersonDataPeer.doUpdate((PersonData) this, con); + } + } + + + + if (collMembers != null) + { + for (int i = 0; i < collMembers.size(); i++) + { + ((Member) collMembers.get(i)).save(con); + } + } + + + if (collPersonPersonTypes != null) + { + for (int i = 0; i < collPersonPersonTypes.size(); i++) + { + ((PersonPersonType) collPersonPersonTypes.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public PersonData copy() throws TorqueException + { + return copyInto(new PersonData()); + } + + protected PersonData copyInto(PersonData copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setThdlUserId(thdl_user_id); + copyObj.setFirstname(firstname); + copyObj.setMiddlename(middlename); + copyObj.setLastname(lastname); + copyObj.setBio(bio); + copyObj.setHistory(history); + copyObj.setParentOrganization(parent_organization); + copyObj.setSchool(school); + copyObj.setDepartment(department); + copyObj.setProgram(program); + copyObj.setAdvisor(advisor); + copyObj.setHighestDegree(highest_degree); + copyObj.setYearBegan(year_began); + copyObj.setYearFinished(year_finished); + copyObj.setOtherBackgrounds(other_backgrounds); + copyObj.setOrganization(organization); + copyObj.setDivision(division); + copyObj.setTitle(title); + copyObj.setStartDate(start_date); + copyObj.setJobDescription(job_description); + + copyObj.setNew(false); + + + List v = getMembers(); + for (int i = 0; i < v.size(); i++) + { + Member obj = (Member) v.get(i); + copyObj.addMember(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + + + v = getPersonPersonTypes(); + for (int i = 0; i < v.size(); i++) + { + PersonPersonType obj = (PersonPersonType) v.get(i); + copyObj.addPersonPersonType(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public PersonDataPeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BasePersonDataPeer.java b/src/java/org/thdl/roster/om/BasePersonDataPeer.java new file mode 100755 index 0000000..f700236 --- /dev/null +++ b/src/java/org/thdl/roster/om/BasePersonDataPeer.java @@ -0,0 +1,892 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BasePersonDataPeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "PersonData"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(PersonDataMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the THDL_USER_ID field */ + public static final String THDL_USER_ID; + /** the column name for the FIRSTNAME field */ + public static final String FIRSTNAME; + /** the column name for the MIDDLENAME field */ + public static final String MIDDLENAME; + /** the column name for the LASTNAME field */ + public static final String LASTNAME; + /** the column name for the BIO field */ + public static final String BIO; + /** the column name for the HISTORY field */ + public static final String HISTORY; + /** the column name for the PARENT_ORGANIZATION field */ + public static final String PARENT_ORGANIZATION; + /** the column name for the SCHOOL field */ + public static final String SCHOOL; + /** the column name for the DEPARTMENT field */ + public static final String DEPARTMENT; + /** the column name for the PROGRAM field */ + public static final String PROGRAM; + /** the column name for the ADVISOR field */ + public static final String ADVISOR; + /** the column name for the HIGHEST_DEGREE field */ + public static final String HIGHEST_DEGREE; + /** the column name for the YEAR_BEGAN field */ + public static final String YEAR_BEGAN; + /** the column name for the YEAR_FINISHED field */ + public static final String YEAR_FINISHED; + /** the column name for the OTHER_BACKGROUNDS field */ + public static final String OTHER_BACKGROUNDS; + /** the column name for the ORGANIZATION field */ + public static final String ORGANIZATION; + /** the column name for the DIVISION field */ + public static final String DIVISION; + /** the column name for the TITLE field */ + public static final String TITLE; + /** the column name for the START_DATE field */ + public static final String START_DATE; + /** the column name for the JOB_DESCRIPTION field */ + public static final String JOB_DESCRIPTION; + + static + { + ID = "PersonData.ID"; + THDL_USER_ID = "PersonData.THDL_USER_ID"; + FIRSTNAME = "PersonData.FIRSTNAME"; + MIDDLENAME = "PersonData.MIDDLENAME"; + LASTNAME = "PersonData.LASTNAME"; + BIO = "PersonData.BIO"; + HISTORY = "PersonData.HISTORY"; + PARENT_ORGANIZATION = "PersonData.PARENT_ORGANIZATION"; + SCHOOL = "PersonData.SCHOOL"; + DEPARTMENT = "PersonData.DEPARTMENT"; + PROGRAM = "PersonData.PROGRAM"; + ADVISOR = "PersonData.ADVISOR"; + HIGHEST_DEGREE = "PersonData.HIGHEST_DEGREE"; + YEAR_BEGAN = "PersonData.YEAR_BEGAN"; + YEAR_FINISHED = "PersonData.YEAR_FINISHED"; + OTHER_BACKGROUNDS = "PersonData.OTHER_BACKGROUNDS"; + ORGANIZATION = "PersonData.ORGANIZATION"; + DIVISION = "PersonData.DIVISION"; + TITLE = "PersonData.TITLE"; + START_DATE = "PersonData.START_DATE"; + JOB_DESCRIPTION = "PersonData.JOB_DESCRIPTION"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(PersonDataMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 21; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.PersonData"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BasePersonDataPeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(THDL_USER_ID); + criteria.addSelectColumn(FIRSTNAME); + criteria.addSelectColumn(MIDDLENAME); + criteria.addSelectColumn(LASTNAME); + criteria.addSelectColumn(BIO); + criteria.addSelectColumn(HISTORY); + criteria.addSelectColumn(PARENT_ORGANIZATION); + criteria.addSelectColumn(SCHOOL); + criteria.addSelectColumn(DEPARTMENT); + criteria.addSelectColumn(PROGRAM); + criteria.addSelectColumn(ADVISOR); + criteria.addSelectColumn(HIGHEST_DEGREE); + criteria.addSelectColumn(YEAR_BEGAN); + criteria.addSelectColumn(YEAR_FINISHED); + criteria.addSelectColumn(OTHER_BACKGROUNDS); + criteria.addSelectColumn(ORGANIZATION); + criteria.addSelectColumn(DIVISION); + criteria.addSelectColumn(TITLE); + criteria.addSelectColumn(START_DATE); + criteria.addSelectColumn(JOB_DESCRIPTION); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static PersonData row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + PersonData obj = (PersonData) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + PersonData obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setThdlUserId(row.getValue(offset + 1).asIntegerObj()); + obj.setFirstname(row.getValue(offset + 2).asString()); + obj.setMiddlename(row.getValue(offset + 3).asString()); + obj.setLastname(row.getValue(offset + 4).asString()); + obj.setBio(row.getValue(offset + 5).asString()); + obj.setHistory(row.getValue(offset + 6).asString()); + obj.setParentOrganization(row.getValue(offset + 7).asString()); + obj.setSchool(row.getValue(offset + 8).asString()); + obj.setDepartment(row.getValue(offset + 9).asString()); + obj.setProgram(row.getValue(offset + 10).asString()); + obj.setAdvisor(row.getValue(offset + 11).asString()); + obj.setHighestDegree(row.getValue(offset + 12).asString()); + obj.setYearBegan(row.getValue(offset + 13).asIntegerObj()); + obj.setYearFinished(row.getValue(offset + 14).asIntegerObj()); + obj.setOtherBackgrounds(row.getValue(offset + 15).asString()); + obj.setOrganization(row.getValue(offset + 16).asString()); + obj.setDivision(row.getValue(offset + 17).asString()); + obj.setTitle(row.getValue(offset + 18).asString()); + obj.setStartDate(row.getValue(offset + 19).asIntegerObj()); + obj.setJobDescription(row.getValue(offset + 20).asString()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BasePersonDataPeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(PersonDataPeer.row2Object(row, 1, + PersonDataPeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BasePersonDataPeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BasePersonDataPeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(PersonData obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(PersonData obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(PersonData obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(PersonData obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(PersonData) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(PersonData obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(PersonData) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(PersonData obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(PersonData) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(PersonData obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BasePersonDataPeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( PersonData obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(THDL_USER_ID, obj.getThdlUserId()); + criteria.add(FIRSTNAME, obj.getFirstname()); + criteria.add(MIDDLENAME, obj.getMiddlename()); + criteria.add(LASTNAME, obj.getLastname()); + criteria.add(BIO, obj.getBio()); + criteria.add(HISTORY, obj.getHistory()); + criteria.add(PARENT_ORGANIZATION, obj.getParentOrganization()); + criteria.add(SCHOOL, obj.getSchool()); + criteria.add(DEPARTMENT, obj.getDepartment()); + criteria.add(PROGRAM, obj.getProgram()); + criteria.add(ADVISOR, obj.getAdvisor()); + criteria.add(HIGHEST_DEGREE, obj.getHighestDegree()); + criteria.add(YEAR_BEGAN, obj.getYearBegan()); + criteria.add(YEAR_FINISHED, obj.getYearFinished()); + criteria.add(OTHER_BACKGROUNDS, obj.getOtherBackgrounds()); + criteria.add(ORGANIZATION, obj.getOrganization()); + criteria.add(DIVISION, obj.getDivision()); + criteria.add(TITLE, obj.getTitle()); + criteria.add(START_DATE, obj.getStartDate()); + criteria.add(JOB_DESCRIPTION, obj.getJobDescription()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static PersonData retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static PersonData retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + PersonData retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static PersonData retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (PersonData)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BasePersonPersonType.java b/src/java/org/thdl/roster/om/BasePersonPersonType.java new file mode 100755 index 0000000..68b66ae --- /dev/null +++ b/src/java/org/thdl/roster/om/BasePersonPersonType.java @@ -0,0 +1,584 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to PersonPersonType + */ +public abstract class BasePersonPersonType extends BaseObject +{ + /** The Peer class */ + private static final PersonPersonTypePeer peer = + new PersonPersonTypePeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the person_type_id field + */ + private Integer person_type_id; + + /** + * The value for the person_data_id field + */ + private Integer person_data_id; + + /** + * The value for the relevance field + */ + private Integer relevance; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + } + + + /** + * Get the PersonTypeId + * + * @return Integer + */ + public Integer getPersonTypeId() + { + return person_type_id; + } + + + /** + * Set the value of PersonTypeId + * + * @param v new value + */ + public void setPersonTypeId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.person_type_id, v)) + { + this.person_type_id = v; + setModified(true); + } + + + if (aPersonType != null && !ObjectUtils.equals(aPersonType.getId(), v)) + { + aPersonType = null; + } + + } + + + /** + * Get the PersonDataId + * + * @return Integer + */ + public Integer getPersonDataId() + { + return person_data_id; + } + + + /** + * Set the value of PersonDataId + * + * @param v new value + */ + public void setPersonDataId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.person_data_id, v)) + { + this.person_data_id = v; + setModified(true); + } + + + if (aPersonData != null && !ObjectUtils.equals(aPersonData.getId(), v)) + { + aPersonData = null; + } + + } + + + /** + * Get the Relevance + * + * @return Integer + */ + public Integer getRelevance() + { + return relevance; + } + + + /** + * Set the value of Relevance + * + * @param v new value + */ + public void setRelevance(Integer v) + { + + + + if (!ObjectUtils.equals(this.relevance, v)) + { + this.relevance = v; + setModified(true); + } + + + } + + + + + + + + private PersonData aPersonData; + + /** + * Declares an association between this object and a PersonData object + * + * @param v PersonData + * @throws TorqueException + */ + public void setPersonData(PersonData v) throws TorqueException + { + if (v == null) + { + setPersonDataId((Integer)null); + } + else + { + setPersonDataId(v.getId()); + } + aPersonData = v; + } + + + /** + * Get the associated PersonData object + * + * @return the associated PersonData object + * @throws TorqueException + */ + public PersonData getPersonData() throws TorqueException + { + if (aPersonData == null && (!ObjectUtils.equals(this.person_data_id, null))) + { + aPersonData = PersonDataPeer.retrieveByPK(SimpleKey.keyFor(this.person_data_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + PersonData obj = PersonDataPeer.retrieveByPK(this.person_data_id); + obj.addPersonPersonTypes(this); + */ + } + return aPersonData; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setPersonDataKey(ObjectKey key) throws TorqueException + { + + setPersonDataId(new Integer(((NumberKey) key).intValue())); + } + + + + + private PersonType aPersonType; + + /** + * Declares an association between this object and a PersonType object + * + * @param v PersonType + * @throws TorqueException + */ + public void setPersonType(PersonType v) throws TorqueException + { + if (v == null) + { + setPersonTypeId((Integer)null); + } + else + { + setPersonTypeId(v.getId()); + } + aPersonType = v; + } + + + /** + * Get the associated PersonType object + * + * @return the associated PersonType object + * @throws TorqueException + */ + public PersonType getPersonType() throws TorqueException + { + if (aPersonType == null && (!ObjectUtils.equals(this.person_type_id, null))) + { + aPersonType = PersonTypePeer.retrieveByPK(SimpleKey.keyFor(this.person_type_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + PersonType obj = PersonTypePeer.retrieveByPK(this.person_type_id); + obj.addPersonPersonTypes(this); + */ + } + return aPersonType; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setPersonTypeKey(ObjectKey key) throws TorqueException + { + + setPersonTypeId(new Integer(((NumberKey) key).intValue())); + } + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("PersonTypeId"); + fieldNames.add("PersonDataId"); + fieldNames.add("Relevance"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("PersonTypeId")) + { + return getPersonTypeId(); + } + if (name.equals("PersonDataId")) + { + return getPersonDataId(); + } + if (name.equals("Relevance")) + { + return getRelevance(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(PersonPersonTypePeer.ID)) + { + return getId(); + } + if (name.equals(PersonPersonTypePeer.PERSON_TYPE_ID)) + { + return getPersonTypeId(); + } + if (name.equals(PersonPersonTypePeer.PERSON_DATA_ID)) + { + return getPersonDataId(); + } + if (name.equals(PersonPersonTypePeer.RELEVANCE)) + { + return getRelevance(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getPersonTypeId(); + } + if (pos == 2) + { + return getPersonDataId(); + } + if (pos == 3) + { + return getRelevance(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(PersonPersonTypePeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + PersonPersonTypePeer.doInsert((PersonPersonType) this, con); + setNew(false); + } + else + { + PersonPersonTypePeer.doUpdate((PersonPersonType) this, con); + } + } + + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public PersonPersonType copy() throws TorqueException + { + return copyInto(new PersonPersonType()); + } + + protected PersonPersonType copyInto(PersonPersonType copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setPersonTypeId(person_type_id); + copyObj.setPersonDataId(person_data_id); + copyObj.setRelevance(relevance); + + copyObj.setNew(false); + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public PersonPersonTypePeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BasePersonPersonTypePeer.java b/src/java/org/thdl/roster/om/BasePersonPersonTypePeer.java new file mode 100755 index 0000000..31e64a3 --- /dev/null +++ b/src/java/org/thdl/roster/om/BasePersonPersonTypePeer.java @@ -0,0 +1,946 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BasePersonPersonTypePeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "PersonPersonType"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(PersonPersonTypeMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the PERSON_TYPE_ID field */ + public static final String PERSON_TYPE_ID; + /** the column name for the PERSON_DATA_ID field */ + public static final String PERSON_DATA_ID; + /** the column name for the RELEVANCE field */ + public static final String RELEVANCE; + + static + { + ID = "PersonPersonType.ID"; + PERSON_TYPE_ID = "PersonPersonType.PERSON_TYPE_ID"; + PERSON_DATA_ID = "PersonPersonType.PERSON_DATA_ID"; + RELEVANCE = "PersonPersonType.RELEVANCE"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(PersonPersonTypeMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 4; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.PersonPersonType"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BasePersonPersonTypePeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(PERSON_TYPE_ID); + criteria.addSelectColumn(PERSON_DATA_ID); + criteria.addSelectColumn(RELEVANCE); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static PersonPersonType row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + PersonPersonType obj = (PersonPersonType) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + PersonPersonType obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setPersonTypeId(row.getValue(offset + 1).asIntegerObj()); + obj.setPersonDataId(row.getValue(offset + 2).asIntegerObj()); + obj.setRelevance(row.getValue(offset + 3).asIntegerObj()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BasePersonPersonTypePeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(PersonPersonTypePeer.row2Object(row, 1, + PersonPersonTypePeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BasePersonPersonTypePeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BasePersonPersonTypePeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(PersonPersonType obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(PersonPersonType obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(PersonPersonType obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(PersonPersonType obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(PersonPersonType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(PersonPersonType obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(PersonPersonType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(PersonPersonType obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(PersonPersonType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(PersonPersonType obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BasePersonPersonTypePeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( PersonPersonType obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(PERSON_TYPE_ID, obj.getPersonTypeId()); + criteria.add(PERSON_DATA_ID, obj.getPersonDataId()); + criteria.add(RELEVANCE, obj.getRelevance()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static PersonPersonType retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static PersonPersonType retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + PersonPersonType retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static PersonPersonType retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (PersonPersonType)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + + + /** + * selects a collection of PersonPersonType objects pre-filled with their + * PersonData objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in PersonPersonTypePeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinPersonData(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + PersonPersonTypePeer.addSelectColumns(c); + int offset = numColumns + 1; + PersonDataPeer.addSelectColumns(c); + + + c.addJoin(PersonPersonTypePeer.PERSON_DATA_ID, + PersonDataPeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = PersonPersonTypePeer.getOMClass(); + + PersonPersonType obj1 = (PersonPersonType) PersonPersonTypePeer + .row2Object(row, 1, omClass); + + + omClass = PersonDataPeer.getOMClass(); + PersonData obj2 = (PersonData)PersonDataPeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + PersonPersonType temp_obj1 = (PersonPersonType)results.get(j); + PersonData temp_obj2 = (PersonData)temp_obj1.getPersonData(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addPersonPersonType(obj1); + break; + } + } + if (newObject) + { + obj2.initPersonPersonTypes(); + obj2.addPersonPersonType(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + + /** + * selects a collection of PersonPersonType objects pre-filled with their + * PersonType objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in PersonPersonTypePeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinPersonType(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + PersonPersonTypePeer.addSelectColumns(c); + int offset = numColumns + 1; + PersonTypePeer.addSelectColumns(c); + + + c.addJoin(PersonPersonTypePeer.PERSON_TYPE_ID, + PersonTypePeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = PersonPersonTypePeer.getOMClass(); + + PersonPersonType obj1 = (PersonPersonType) PersonPersonTypePeer + .row2Object(row, 1, omClass); + + + omClass = PersonTypePeer.getOMClass(); + PersonType obj2 = (PersonType)PersonTypePeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + PersonPersonType temp_obj1 = (PersonPersonType)results.get(j); + PersonType temp_obj2 = (PersonType)temp_obj1.getPersonType(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addPersonPersonType(obj1); + break; + } + } + if (newObject) + { + obj2.initPersonPersonTypes(); + obj2.addPersonPersonType(obj1); + } + results.add(obj1); + } + return results; + } + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BasePersonType.java b/src/java/org/thdl/roster/om/BasePersonType.java new file mode 100755 index 0000000..67202da --- /dev/null +++ b/src/java/org/thdl/roster/om/BasePersonType.java @@ -0,0 +1,561 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to PersonType + */ +public abstract class BasePersonType extends BaseObject +{ + /** The Peer class */ + private static final PersonTypePeer peer = + new PersonTypePeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the person_type field + */ + private String person_type; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + + // update associated PersonPersonType + if (collPersonPersonTypes != null) + { + for (int i = 0; i < collPersonPersonTypes.size(); i++) + { + ((PersonPersonType) collPersonPersonTypes.get(i)) + .setPersonTypeId(v); + } + } + } + + + /** + * Get the PersonType + * + * @return String + */ + public String getPersonType() + { + return person_type; + } + + + /** + * Set the value of PersonType + * + * @param v new value + */ + public void setPersonType(String v) + { + + + + if (!ObjectUtils.equals(this.person_type, v)) + { + this.person_type = v; + setModified(true); + } + + + } + + + + + + + /** + * Collection to store aggregation of collPersonPersonTypes + */ + protected List collPersonPersonTypes; + + /** + * Temporary storage of collPersonPersonTypes to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initPersonPersonTypes() + { + if (collPersonPersonTypes == null) + { + collPersonPersonTypes = new ArrayList(); + } + } + + /** + * Method called to associate a PersonPersonType object to this object + * through the PersonPersonType foreign key attribute + * + * @param l PersonPersonType + * @throws TorqueException + */ + public void addPersonPersonType(PersonPersonType l) throws TorqueException + { + getPersonPersonTypes().add(l); + l.setPersonType((PersonType) this); + } + + /** + * The criteria used to select the current contents of collPersonPersonTypes + */ + private Criteria lastPersonPersonTypesCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getPersonPersonTypes(new Criteria()) + * + * @throws TorqueException + */ + public List getPersonPersonTypes() throws TorqueException + { + if (collPersonPersonTypes == null) + { + collPersonPersonTypes = getPersonPersonTypes(new Criteria(10)); + } + return collPersonPersonTypes; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this PersonType has previously + * been saved, it will retrieve related PersonPersonTypes from storage. + * If this PersonType is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getPersonPersonTypes(Criteria criteria) throws TorqueException + { + if (collPersonPersonTypes == null) + { + if (isNew()) + { + collPersonPersonTypes = new ArrayList(); + } + else + { + criteria.add(PersonPersonTypePeer.PERSON_TYPE_ID, getId() ); + collPersonPersonTypes = PersonPersonTypePeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(PersonPersonTypePeer.PERSON_TYPE_ID, getId()); + if (!lastPersonPersonTypesCriteria.equals(criteria)) + { + collPersonPersonTypes = PersonPersonTypePeer.doSelect(criteria); + } + } + } + lastPersonPersonTypesCriteria = criteria; + + return collPersonPersonTypes; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getPersonPersonTypes(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getPersonPersonTypes(Connection con) throws TorqueException + { + if (collPersonPersonTypes == null) + { + collPersonPersonTypes = getPersonPersonTypes(new Criteria(10), con); + } + return collPersonPersonTypes; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this PersonType has previously + * been saved, it will retrieve related PersonPersonTypes from storage. + * If this PersonType is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getPersonPersonTypes(Criteria criteria, Connection con) + throws TorqueException + { + if (collPersonPersonTypes == null) + { + if (isNew()) + { + collPersonPersonTypes = new ArrayList(); + } + else + { + criteria.add(PersonPersonTypePeer.PERSON_TYPE_ID, getId()); + collPersonPersonTypes = PersonPersonTypePeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(PersonPersonTypePeer.PERSON_TYPE_ID, getId()); + if (!lastPersonPersonTypesCriteria.equals(criteria)) + { + collPersonPersonTypes = PersonPersonTypePeer.doSelect(criteria, con); + } + } + } + lastPersonPersonTypesCriteria = criteria; + + return collPersonPersonTypes; + } + + + + + + + + + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("PersonType"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("PersonType")) + { + return getPersonType(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(PersonTypePeer.ID)) + { + return getId(); + } + if (name.equals(PersonTypePeer.PERSON_TYPE)) + { + return getPersonType(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getPersonType(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(PersonTypePeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + PersonTypePeer.doInsert((PersonType) this, con); + setNew(false); + } + else + { + PersonTypePeer.doUpdate((PersonType) this, con); + } + } + + + + if (collPersonPersonTypes != null) + { + for (int i = 0; i < collPersonPersonTypes.size(); i++) + { + ((PersonPersonType) collPersonPersonTypes.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public PersonType copy() throws TorqueException + { + return copyInto(new PersonType()); + } + + protected PersonType copyInto(PersonType copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setPersonType(person_type); + + copyObj.setNew(false); + + + List v = getPersonPersonTypes(); + for (int i = 0; i < v.size(); i++) + { + PersonPersonType obj = (PersonPersonType) v.get(i); + copyObj.addPersonPersonType(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public PersonTypePeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BasePersonTypePeer.java b/src/java/org/thdl/roster/om/BasePersonTypePeer.java new file mode 100755 index 0000000..b48199e --- /dev/null +++ b/src/java/org/thdl/roster/om/BasePersonTypePeer.java @@ -0,0 +1,778 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BasePersonTypePeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "PersonType"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(PersonTypeMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the PERSON_TYPE field */ + public static final String PERSON_TYPE; + + static + { + ID = "PersonType.ID"; + PERSON_TYPE = "PersonType.PERSON_TYPE"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(PersonTypeMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 2; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.PersonType"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BasePersonTypePeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(PERSON_TYPE); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static PersonType row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + PersonType obj = (PersonType) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + PersonType obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setPersonType(row.getValue(offset + 1).asString()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BasePersonTypePeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(PersonTypePeer.row2Object(row, 1, + PersonTypePeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BasePersonTypePeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BasePersonTypePeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(PersonType obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(PersonType obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(PersonType obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(PersonType obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(PersonType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(PersonType obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(PersonType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(PersonType obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(PersonType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(PersonType obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BasePersonTypePeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( PersonType obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(PERSON_TYPE, obj.getPersonType()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static PersonType retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static PersonType retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + PersonType retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static PersonType retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (PersonType)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BasePhone.java b/src/java/org/thdl/roster/om/BasePhone.java new file mode 100755 index 0000000..20d8201 --- /dev/null +++ b/src/java/org/thdl/roster/om/BasePhone.java @@ -0,0 +1,890 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to Phone + */ +public abstract class BasePhone extends BaseObject +{ + /** The Peer class */ + private static final PhonePeer peer = + new PhonePeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the country_code field + */ + private Integer country_code; + + /** + * The value for the area_code field + */ + private Integer area_code; + + /** + * The value for the number field + */ + private Integer number; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + + // update associated ContactInfo + if (collContactInfosRelatedByPhone != null) + { + for (int i = 0; i < collContactInfosRelatedByPhone.size(); i++) + { + ((ContactInfo) collContactInfosRelatedByPhone.get(i)) + .setPhone(v); + } + } + + // update associated ContactInfo + if (collContactInfosRelatedByFax != null) + { + for (int i = 0; i < collContactInfosRelatedByFax.size(); i++) + { + ((ContactInfo) collContactInfosRelatedByFax.get(i)) + .setFax(v); + } + } + } + + + /** + * Get the CountryCode + * + * @return Integer + */ + public Integer getCountryCode() + { + return country_code; + } + + + /** + * Set the value of CountryCode + * + * @param v new value + */ + public void setCountryCode(Integer v) + { + + + + if (!ObjectUtils.equals(this.country_code, v)) + { + this.country_code = v; + setModified(true); + } + + + } + + + /** + * Get the AreaCode + * + * @return Integer + */ + public Integer getAreaCode() + { + return area_code; + } + + + /** + * Set the value of AreaCode + * + * @param v new value + */ + public void setAreaCode(Integer v) + { + + + + if (!ObjectUtils.equals(this.area_code, v)) + { + this.area_code = v; + setModified(true); + } + + + } + + + /** + * Get the Number + * + * @return Integer + */ + public Integer getNumber() + { + return number; + } + + + /** + * Set the value of Number + * + * @param v new value + */ + public void setNumber(Integer v) + { + + + + if (!ObjectUtils.equals(this.number, v)) + { + this.number = v; + setModified(true); + } + + + } + + + + + + + /** + * Collection to store aggregation of collContactInfosRelatedByPhone + */ + protected List collContactInfosRelatedByPhone; + + /** + * Temporary storage of collContactInfosRelatedByPhone to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initContactInfosRelatedByPhone() + { + if (collContactInfosRelatedByPhone == null) + { + collContactInfosRelatedByPhone = new ArrayList(); + } + } + + /** + * Method called to associate a ContactInfo object to this object + * through the ContactInfo foreign key attribute + * + * @param l ContactInfo + * @throws TorqueException + */ + public void addContactInfoRelatedByPhone(ContactInfo l) throws TorqueException + { + getContactInfosRelatedByPhone().add(l); + l.setPhoneRelatedByPhone((Phone) this); + } + + /** + * The criteria used to select the current contents of collContactInfosRelatedByPhone + */ + private Criteria lastContactInfosRelatedByPhoneCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getContactInfosRelatedByPhone(new Criteria()) + * + * @throws TorqueException + */ + public List getContactInfosRelatedByPhone() throws TorqueException + { + if (collContactInfosRelatedByPhone == null) + { + collContactInfosRelatedByPhone = getContactInfosRelatedByPhone(new Criteria(10)); + } + return collContactInfosRelatedByPhone; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this Phone has previously + * been saved, it will retrieve related ContactInfosRelatedByPhone from storage. + * If this Phone is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getContactInfosRelatedByPhone(Criteria criteria) throws TorqueException + { + if (collContactInfosRelatedByPhone == null) + { + if (isNew()) + { + collContactInfosRelatedByPhone = new ArrayList(); + } + else + { + criteria.add(ContactInfoPeer.PHONE, getId() ); + collContactInfosRelatedByPhone = ContactInfoPeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ContactInfoPeer.PHONE, getId()); + if (!lastContactInfosRelatedByPhoneCriteria.equals(criteria)) + { + collContactInfosRelatedByPhone = ContactInfoPeer.doSelect(criteria); + } + } + } + lastContactInfosRelatedByPhoneCriteria = criteria; + + return collContactInfosRelatedByPhone; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getContactInfosRelatedByPhone(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getContactInfosRelatedByPhone(Connection con) throws TorqueException + { + if (collContactInfosRelatedByPhone == null) + { + collContactInfosRelatedByPhone = getContactInfosRelatedByPhone(new Criteria(10), con); + } + return collContactInfosRelatedByPhone; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this Phone has previously + * been saved, it will retrieve related ContactInfosRelatedByPhone from storage. + * If this Phone is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getContactInfosRelatedByPhone(Criteria criteria, Connection con) + throws TorqueException + { + if (collContactInfosRelatedByPhone == null) + { + if (isNew()) + { + collContactInfosRelatedByPhone = new ArrayList(); + } + else + { + criteria.add(ContactInfoPeer.PHONE, getId()); + collContactInfosRelatedByPhone = ContactInfoPeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ContactInfoPeer.PHONE, getId()); + if (!lastContactInfosRelatedByPhoneCriteria.equals(criteria)) + { + collContactInfosRelatedByPhone = ContactInfoPeer.doSelect(criteria, con); + } + } + } + lastContactInfosRelatedByPhoneCriteria = criteria; + + return collContactInfosRelatedByPhone; + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /** + * Collection to store aggregation of collContactInfosRelatedByFax + */ + protected List collContactInfosRelatedByFax; + + /** + * Temporary storage of collContactInfosRelatedByFax to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initContactInfosRelatedByFax() + { + if (collContactInfosRelatedByFax == null) + { + collContactInfosRelatedByFax = new ArrayList(); + } + } + + /** + * Method called to associate a ContactInfo object to this object + * through the ContactInfo foreign key attribute + * + * @param l ContactInfo + * @throws TorqueException + */ + public void addContactInfoRelatedByFax(ContactInfo l) throws TorqueException + { + getContactInfosRelatedByFax().add(l); + l.setPhoneRelatedByFax((Phone) this); + } + + /** + * The criteria used to select the current contents of collContactInfosRelatedByFax + */ + private Criteria lastContactInfosRelatedByFaxCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getContactInfosRelatedByFax(new Criteria()) + * + * @throws TorqueException + */ + public List getContactInfosRelatedByFax() throws TorqueException + { + if (collContactInfosRelatedByFax == null) + { + collContactInfosRelatedByFax = getContactInfosRelatedByFax(new Criteria(10)); + } + return collContactInfosRelatedByFax; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this Phone has previously + * been saved, it will retrieve related ContactInfosRelatedByFax from storage. + * If this Phone is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getContactInfosRelatedByFax(Criteria criteria) throws TorqueException + { + if (collContactInfosRelatedByFax == null) + { + if (isNew()) + { + collContactInfosRelatedByFax = new ArrayList(); + } + else + { + criteria.add(ContactInfoPeer.FAX, getId() ); + collContactInfosRelatedByFax = ContactInfoPeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ContactInfoPeer.FAX, getId()); + if (!lastContactInfosRelatedByFaxCriteria.equals(criteria)) + { + collContactInfosRelatedByFax = ContactInfoPeer.doSelect(criteria); + } + } + } + lastContactInfosRelatedByFaxCriteria = criteria; + + return collContactInfosRelatedByFax; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getContactInfosRelatedByFax(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getContactInfosRelatedByFax(Connection con) throws TorqueException + { + if (collContactInfosRelatedByFax == null) + { + collContactInfosRelatedByFax = getContactInfosRelatedByFax(new Criteria(10), con); + } + return collContactInfosRelatedByFax; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this Phone has previously + * been saved, it will retrieve related ContactInfosRelatedByFax from storage. + * If this Phone is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getContactInfosRelatedByFax(Criteria criteria, Connection con) + throws TorqueException + { + if (collContactInfosRelatedByFax == null) + { + if (isNew()) + { + collContactInfosRelatedByFax = new ArrayList(); + } + else + { + criteria.add(ContactInfoPeer.FAX, getId()); + collContactInfosRelatedByFax = ContactInfoPeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ContactInfoPeer.FAX, getId()); + if (!lastContactInfosRelatedByFaxCriteria.equals(criteria)) + { + collContactInfosRelatedByFax = ContactInfoPeer.doSelect(criteria, con); + } + } + } + lastContactInfosRelatedByFaxCriteria = criteria; + + return collContactInfosRelatedByFax; + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("CountryCode"); + fieldNames.add("AreaCode"); + fieldNames.add("Number"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("CountryCode")) + { + return getCountryCode(); + } + if (name.equals("AreaCode")) + { + return getAreaCode(); + } + if (name.equals("Number")) + { + return getNumber(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(PhonePeer.ID)) + { + return getId(); + } + if (name.equals(PhonePeer.COUNTRY_CODE)) + { + return getCountryCode(); + } + if (name.equals(PhonePeer.AREA_CODE)) + { + return getAreaCode(); + } + if (name.equals(PhonePeer.NUMBER)) + { + return getNumber(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getCountryCode(); + } + if (pos == 2) + { + return getAreaCode(); + } + if (pos == 3) + { + return getNumber(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(PhonePeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + PhonePeer.doInsert((Phone) this, con); + setNew(false); + } + else + { + PhonePeer.doUpdate((Phone) this, con); + } + } + + + + if (collContactInfosRelatedByPhone != null) + { + for (int i = 0; i < collContactInfosRelatedByPhone.size(); i++) + { + ((ContactInfo) collContactInfosRelatedByPhone.get(i)).save(con); + } + } + + + if (collContactInfosRelatedByFax != null) + { + for (int i = 0; i < collContactInfosRelatedByFax.size(); i++) + { + ((ContactInfo) collContactInfosRelatedByFax.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public Phone copy() throws TorqueException + { + return copyInto(new Phone()); + } + + protected Phone copyInto(Phone copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setCountryCode(country_code); + copyObj.setAreaCode(area_code); + copyObj.setNumber(number); + + copyObj.setNew(false); + + + List v = getContactInfosRelatedByPhone(); + for (int i = 0; i < v.size(); i++) + { + ContactInfo obj = (ContactInfo) v.get(i); + copyObj.addContactInfoRelatedByPhone(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + + + v = getContactInfosRelatedByFax(); + for (int i = 0; i < v.size(); i++) + { + ContactInfo obj = (ContactInfo) v.get(i); + copyObj.addContactInfoRelatedByFax(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public PhonePeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BasePhonePeer.java b/src/java/org/thdl/roster/om/BasePhonePeer.java new file mode 100755 index 0000000..1090992 --- /dev/null +++ b/src/java/org/thdl/roster/om/BasePhonePeer.java @@ -0,0 +1,790 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BasePhonePeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "Phone"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(PhoneMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the COUNTRY_CODE field */ + public static final String COUNTRY_CODE; + /** the column name for the AREA_CODE field */ + public static final String AREA_CODE; + /** the column name for the NUMBER field */ + public static final String NUMBER; + + static + { + ID = "Phone.ID"; + COUNTRY_CODE = "Phone.COUNTRY_CODE"; + AREA_CODE = "Phone.AREA_CODE"; + NUMBER = "Phone.NUMBER"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(PhoneMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 4; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.Phone"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BasePhonePeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(COUNTRY_CODE); + criteria.addSelectColumn(AREA_CODE); + criteria.addSelectColumn(NUMBER); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Phone row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + Phone obj = (Phone) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + Phone obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setCountryCode(row.getValue(offset + 1).asIntegerObj()); + obj.setAreaCode(row.getValue(offset + 2).asIntegerObj()); + obj.setNumber(row.getValue(offset + 3).asIntegerObj()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BasePhonePeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(PhonePeer.row2Object(row, 1, + PhonePeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BasePhonePeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BasePhonePeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Phone obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(Phone obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Phone obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Phone obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Phone) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(Phone obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(Phone) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Phone obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(Phone) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Phone obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BasePhonePeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( Phone obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(COUNTRY_CODE, obj.getCountryCode()); + criteria.add(AREA_CODE, obj.getAreaCode()); + criteria.add(NUMBER, obj.getNumber()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Phone retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Phone retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + Phone retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Phone retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (Phone)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseProjectData.java b/src/java/org/thdl/roster/om/BaseProjectData.java new file mode 100755 index 0000000..017c110 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseProjectData.java @@ -0,0 +1,1206 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to ProjectData + */ +public abstract class BaseProjectData extends BaseObject +{ + /** The Peer class */ + private static final ProjectDataPeer peer = + new ProjectDataPeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the name field + */ + private String name; + + /** + * The value for the parent_organization field + */ + private String parent_organization; + + /** + * The value for the divisions field + */ + private String divisions; + + /** + * The value for the people field + */ + private String people; + + /** + * The value for the mailing_list field + */ + private String mailing_list; + + /** + * The value for the description field + */ + private String description; + + /** + * The value for the history field + */ + private String history; + + /** + * The value for the education_programs field + */ + private String education_programs; + + /** + * The value for the resources field + */ + private String resources; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + + // update associated Member + if (collMembers != null) + { + for (int i = 0; i < collMembers.size(); i++) + { + ((Member) collMembers.get(i)) + .setProjectDataId(v); + } + } + + // update associated ProjectProjectType + if (collProjectProjectTypes != null) + { + for (int i = 0; i < collProjectProjectTypes.size(); i++) + { + ((ProjectProjectType) collProjectProjectTypes.get(i)) + .setProjectDataId(v); + } + } + } + + + /** + * Get the Name + * + * @return String + */ + public String getName() + { + return name; + } + + + /** + * Set the value of Name + * + * @param v new value + */ + public void setName(String v) + { + + + + if (!ObjectUtils.equals(this.name, v)) + { + this.name = v; + setModified(true); + } + + + } + + + /** + * Get the ParentOrganization + * + * @return String + */ + public String getParentOrganization() + { + return parent_organization; + } + + + /** + * Set the value of ParentOrganization + * + * @param v new value + */ + public void setParentOrganization(String v) + { + + + + if (!ObjectUtils.equals(this.parent_organization, v)) + { + this.parent_organization = v; + setModified(true); + } + + + } + + + /** + * Get the Divisions + * + * @return String + */ + public String getDivisions() + { + return divisions; + } + + + /** + * Set the value of Divisions + * + * @param v new value + */ + public void setDivisions(String v) + { + + + + if (!ObjectUtils.equals(this.divisions, v)) + { + this.divisions = v; + setModified(true); + } + + + } + + + /** + * Get the People + * + * @return String + */ + public String getPeople() + { + return people; + } + + + /** + * Set the value of People + * + * @param v new value + */ + public void setPeople(String v) + { + + + + if (!ObjectUtils.equals(this.people, v)) + { + this.people = v; + setModified(true); + } + + + } + + + /** + * Get the MailingList + * + * @return String + */ + public String getMailingList() + { + return mailing_list; + } + + + /** + * Set the value of MailingList + * + * @param v new value + */ + public void setMailingList(String v) + { + + + + if (!ObjectUtils.equals(this.mailing_list, v)) + { + this.mailing_list = v; + setModified(true); + } + + + } + + + /** + * Get the Description + * + * @return String + */ + public String getDescription() + { + return description; + } + + + /** + * Set the value of Description + * + * @param v new value + */ + public void setDescription(String v) + { + + + + if (!ObjectUtils.equals(this.description, v)) + { + this.description = v; + setModified(true); + } + + + } + + + /** + * Get the History + * + * @return String + */ + public String getHistory() + { + return history; + } + + + /** + * Set the value of History + * + * @param v new value + */ + public void setHistory(String v) + { + + + + if (!ObjectUtils.equals(this.history, v)) + { + this.history = v; + setModified(true); + } + + + } + + + /** + * Get the EducationPrograms + * + * @return String + */ + public String getEducationPrograms() + { + return education_programs; + } + + + /** + * Set the value of EducationPrograms + * + * @param v new value + */ + public void setEducationPrograms(String v) + { + + + + if (!ObjectUtils.equals(this.education_programs, v)) + { + this.education_programs = v; + setModified(true); + } + + + } + + + /** + * Get the Resources + * + * @return String + */ + public String getResources() + { + return resources; + } + + + /** + * Set the value of Resources + * + * @param v new value + */ + public void setResources(String v) + { + + + + if (!ObjectUtils.equals(this.resources, v)) + { + this.resources = v; + setModified(true); + } + + + } + + + + + + + /** + * Collection to store aggregation of collMembers + */ + protected List collMembers; + + /** + * Temporary storage of collMembers to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initMembers() + { + if (collMembers == null) + { + collMembers = new ArrayList(); + } + } + + /** + * Method called to associate a Member object to this object + * through the Member foreign key attribute + * + * @param l Member + * @throws TorqueException + */ + public void addMember(Member l) throws TorqueException + { + getMembers().add(l); + l.setProjectData((ProjectData) this); + } + + /** + * The criteria used to select the current contents of collMembers + */ + private Criteria lastMembersCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getMembers(new Criteria()) + * + * @throws TorqueException + */ + public List getMembers() throws TorqueException + { + if (collMembers == null) + { + collMembers = getMembers(new Criteria(10)); + } + return collMembers; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ProjectData has previously + * been saved, it will retrieve related Members from storage. + * If this ProjectData is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getMembers(Criteria criteria) throws TorqueException + { + if (collMembers == null) + { + if (isNew()) + { + collMembers = new ArrayList(); + } + else + { + criteria.add(MemberPeer.PROJECT_DATA_ID, getId() ); + collMembers = MemberPeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(MemberPeer.PROJECT_DATA_ID, getId()); + if (!lastMembersCriteria.equals(criteria)) + { + collMembers = MemberPeer.doSelect(criteria); + } + } + } + lastMembersCriteria = criteria; + + return collMembers; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getMembers(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getMembers(Connection con) throws TorqueException + { + if (collMembers == null) + { + collMembers = getMembers(new Criteria(10), con); + } + return collMembers; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ProjectData has previously + * been saved, it will retrieve related Members from storage. + * If this ProjectData is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getMembers(Criteria criteria, Connection con) + throws TorqueException + { + if (collMembers == null) + { + if (isNew()) + { + collMembers = new ArrayList(); + } + else + { + criteria.add(MemberPeer.PROJECT_DATA_ID, getId()); + collMembers = MemberPeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(MemberPeer.PROJECT_DATA_ID, getId()); + if (!lastMembersCriteria.equals(criteria)) + { + collMembers = MemberPeer.doSelect(criteria, con); + } + } + } + lastMembersCriteria = criteria; + + return collMembers; + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /** + * Collection to store aggregation of collProjectProjectTypes + */ + protected List collProjectProjectTypes; + + /** + * Temporary storage of collProjectProjectTypes to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initProjectProjectTypes() + { + if (collProjectProjectTypes == null) + { + collProjectProjectTypes = new ArrayList(); + } + } + + /** + * Method called to associate a ProjectProjectType object to this object + * through the ProjectProjectType foreign key attribute + * + * @param l ProjectProjectType + * @throws TorqueException + */ + public void addProjectProjectType(ProjectProjectType l) throws TorqueException + { + getProjectProjectTypes().add(l); + l.setProjectData((ProjectData) this); + } + + /** + * The criteria used to select the current contents of collProjectProjectTypes + */ + private Criteria lastProjectProjectTypesCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getProjectProjectTypes(new Criteria()) + * + * @throws TorqueException + */ + public List getProjectProjectTypes() throws TorqueException + { + if (collProjectProjectTypes == null) + { + collProjectProjectTypes = getProjectProjectTypes(new Criteria(10)); + } + return collProjectProjectTypes; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ProjectData has previously + * been saved, it will retrieve related ProjectProjectTypes from storage. + * If this ProjectData is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getProjectProjectTypes(Criteria criteria) throws TorqueException + { + if (collProjectProjectTypes == null) + { + if (isNew()) + { + collProjectProjectTypes = new ArrayList(); + } + else + { + criteria.add(ProjectProjectTypePeer.PROJECT_DATA_ID, getId() ); + collProjectProjectTypes = ProjectProjectTypePeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ProjectProjectTypePeer.PROJECT_DATA_ID, getId()); + if (!lastProjectProjectTypesCriteria.equals(criteria)) + { + collProjectProjectTypes = ProjectProjectTypePeer.doSelect(criteria); + } + } + } + lastProjectProjectTypesCriteria = criteria; + + return collProjectProjectTypes; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getProjectProjectTypes(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getProjectProjectTypes(Connection con) throws TorqueException + { + if (collProjectProjectTypes == null) + { + collProjectProjectTypes = getProjectProjectTypes(new Criteria(10), con); + } + return collProjectProjectTypes; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ProjectData has previously + * been saved, it will retrieve related ProjectProjectTypes from storage. + * If this ProjectData is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getProjectProjectTypes(Criteria criteria, Connection con) + throws TorqueException + { + if (collProjectProjectTypes == null) + { + if (isNew()) + { + collProjectProjectTypes = new ArrayList(); + } + else + { + criteria.add(ProjectProjectTypePeer.PROJECT_DATA_ID, getId()); + collProjectProjectTypes = ProjectProjectTypePeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ProjectProjectTypePeer.PROJECT_DATA_ID, getId()); + if (!lastProjectProjectTypesCriteria.equals(criteria)) + { + collProjectProjectTypes = ProjectProjectTypePeer.doSelect(criteria, con); + } + } + } + lastProjectProjectTypesCriteria = criteria; + + return collProjectProjectTypes; + } + + + + + + + + + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("Name"); + fieldNames.add("ParentOrganization"); + fieldNames.add("Divisions"); + fieldNames.add("People"); + fieldNames.add("MailingList"); + fieldNames.add("Description"); + fieldNames.add("History"); + fieldNames.add("EducationPrograms"); + fieldNames.add("Resources"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("Name")) + { + return getName(); + } + if (name.equals("ParentOrganization")) + { + return getParentOrganization(); + } + if (name.equals("Divisions")) + { + return getDivisions(); + } + if (name.equals("People")) + { + return getPeople(); + } + if (name.equals("MailingList")) + { + return getMailingList(); + } + if (name.equals("Description")) + { + return getDescription(); + } + if (name.equals("History")) + { + return getHistory(); + } + if (name.equals("EducationPrograms")) + { + return getEducationPrograms(); + } + if (name.equals("Resources")) + { + return getResources(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(ProjectDataPeer.ID)) + { + return getId(); + } + if (name.equals(ProjectDataPeer.NAME)) + { + return getName(); + } + if (name.equals(ProjectDataPeer.PARENT_ORGANIZATION)) + { + return getParentOrganization(); + } + if (name.equals(ProjectDataPeer.DIVISIONS)) + { + return getDivisions(); + } + if (name.equals(ProjectDataPeer.PEOPLE)) + { + return getPeople(); + } + if (name.equals(ProjectDataPeer.MAILING_LIST)) + { + return getMailingList(); + } + if (name.equals(ProjectDataPeer.DESCRIPTION)) + { + return getDescription(); + } + if (name.equals(ProjectDataPeer.HISTORY)) + { + return getHistory(); + } + if (name.equals(ProjectDataPeer.EDUCATION_PROGRAMS)) + { + return getEducationPrograms(); + } + if (name.equals(ProjectDataPeer.RESOURCES)) + { + return getResources(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getName(); + } + if (pos == 2) + { + return getParentOrganization(); + } + if (pos == 3) + { + return getDivisions(); + } + if (pos == 4) + { + return getPeople(); + } + if (pos == 5) + { + return getMailingList(); + } + if (pos == 6) + { + return getDescription(); + } + if (pos == 7) + { + return getHistory(); + } + if (pos == 8) + { + return getEducationPrograms(); + } + if (pos == 9) + { + return getResources(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(ProjectDataPeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + ProjectDataPeer.doInsert((ProjectData) this, con); + setNew(false); + } + else + { + ProjectDataPeer.doUpdate((ProjectData) this, con); + } + } + + + + if (collMembers != null) + { + for (int i = 0; i < collMembers.size(); i++) + { + ((Member) collMembers.get(i)).save(con); + } + } + + + if (collProjectProjectTypes != null) + { + for (int i = 0; i < collProjectProjectTypes.size(); i++) + { + ((ProjectProjectType) collProjectProjectTypes.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public ProjectData copy() throws TorqueException + { + return copyInto(new ProjectData()); + } + + protected ProjectData copyInto(ProjectData copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setName(name); + copyObj.setParentOrganization(parent_organization); + copyObj.setDivisions(divisions); + copyObj.setPeople(people); + copyObj.setMailingList(mailing_list); + copyObj.setDescription(description); + copyObj.setHistory(history); + copyObj.setEducationPrograms(education_programs); + copyObj.setResources(resources); + + copyObj.setNew(false); + + + List v = getMembers(); + for (int i = 0; i < v.size(); i++) + { + Member obj = (Member) v.get(i); + copyObj.addMember(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + + + v = getProjectProjectTypes(); + for (int i = 0; i < v.size(); i++) + { + ProjectProjectType obj = (ProjectProjectType) v.get(i); + copyObj.addProjectProjectType(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public ProjectDataPeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseProjectDataPeer.java b/src/java/org/thdl/roster/om/BaseProjectDataPeer.java new file mode 100755 index 0000000..caef8ff --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseProjectDataPeer.java @@ -0,0 +1,826 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseProjectDataPeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "ProjectData"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(ProjectDataMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the NAME field */ + public static final String NAME; + /** the column name for the PARENT_ORGANIZATION field */ + public static final String PARENT_ORGANIZATION; + /** the column name for the DIVISIONS field */ + public static final String DIVISIONS; + /** the column name for the PEOPLE field */ + public static final String PEOPLE; + /** the column name for the MAILING_LIST field */ + public static final String MAILING_LIST; + /** the column name for the DESCRIPTION field */ + public static final String DESCRIPTION; + /** the column name for the HISTORY field */ + public static final String HISTORY; + /** the column name for the EDUCATION_PROGRAMS field */ + public static final String EDUCATION_PROGRAMS; + /** the column name for the RESOURCES field */ + public static final String RESOURCES; + + static + { + ID = "ProjectData.ID"; + NAME = "ProjectData.NAME"; + PARENT_ORGANIZATION = "ProjectData.PARENT_ORGANIZATION"; + DIVISIONS = "ProjectData.DIVISIONS"; + PEOPLE = "ProjectData.PEOPLE"; + MAILING_LIST = "ProjectData.MAILING_LIST"; + DESCRIPTION = "ProjectData.DESCRIPTION"; + HISTORY = "ProjectData.HISTORY"; + EDUCATION_PROGRAMS = "ProjectData.EDUCATION_PROGRAMS"; + RESOURCES = "ProjectData.RESOURCES"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(ProjectDataMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 10; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.ProjectData"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseProjectDataPeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(NAME); + criteria.addSelectColumn(PARENT_ORGANIZATION); + criteria.addSelectColumn(DIVISIONS); + criteria.addSelectColumn(PEOPLE); + criteria.addSelectColumn(MAILING_LIST); + criteria.addSelectColumn(DESCRIPTION); + criteria.addSelectColumn(HISTORY); + criteria.addSelectColumn(EDUCATION_PROGRAMS); + criteria.addSelectColumn(RESOURCES); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ProjectData row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + ProjectData obj = (ProjectData) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + ProjectData obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setName(row.getValue(offset + 1).asString()); + obj.setParentOrganization(row.getValue(offset + 2).asString()); + obj.setDivisions(row.getValue(offset + 3).asString()); + obj.setPeople(row.getValue(offset + 4).asString()); + obj.setMailingList(row.getValue(offset + 5).asString()); + obj.setDescription(row.getValue(offset + 6).asString()); + obj.setHistory(row.getValue(offset + 7).asString()); + obj.setEducationPrograms(row.getValue(offset + 8).asString()); + obj.setResources(row.getValue(offset + 9).asString()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseProjectDataPeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(ProjectDataPeer.row2Object(row, 1, + ProjectDataPeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseProjectDataPeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseProjectDataPeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(ProjectData obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(ProjectData obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(ProjectData obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ProjectData obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(ProjectData) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(ProjectData obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(ProjectData) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(ProjectData obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ProjectData) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ProjectData obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseProjectDataPeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( ProjectData obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(NAME, obj.getName()); + criteria.add(PARENT_ORGANIZATION, obj.getParentOrganization()); + criteria.add(DIVISIONS, obj.getDivisions()); + criteria.add(PEOPLE, obj.getPeople()); + criteria.add(MAILING_LIST, obj.getMailingList()); + criteria.add(DESCRIPTION, obj.getDescription()); + criteria.add(HISTORY, obj.getHistory()); + criteria.add(EDUCATION_PROGRAMS, obj.getEducationPrograms()); + criteria.add(RESOURCES, obj.getResources()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ProjectData retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ProjectData retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + ProjectData retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ProjectData retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (ProjectData)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseProjectProjectType.java b/src/java/org/thdl/roster/om/BaseProjectProjectType.java new file mode 100755 index 0000000..10b5afb --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseProjectProjectType.java @@ -0,0 +1,584 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to ProjectProjectType + */ +public abstract class BaseProjectProjectType extends BaseObject +{ + /** The Peer class */ + private static final ProjectProjectTypePeer peer = + new ProjectProjectTypePeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the project_type_id field + */ + private Integer project_type_id; + + /** + * The value for the project_data_id field + */ + private Integer project_data_id; + + /** + * The value for the relevance field + */ + private Integer relevance; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + } + + + /** + * Get the ProjectTypeId + * + * @return Integer + */ + public Integer getProjectTypeId() + { + return project_type_id; + } + + + /** + * Set the value of ProjectTypeId + * + * @param v new value + */ + public void setProjectTypeId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.project_type_id, v)) + { + this.project_type_id = v; + setModified(true); + } + + + if (aProjectType != null && !ObjectUtils.equals(aProjectType.getId(), v)) + { + aProjectType = null; + } + + } + + + /** + * Get the ProjectDataId + * + * @return Integer + */ + public Integer getProjectDataId() + { + return project_data_id; + } + + + /** + * Set the value of ProjectDataId + * + * @param v new value + */ + public void setProjectDataId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.project_data_id, v)) + { + this.project_data_id = v; + setModified(true); + } + + + if (aProjectData != null && !ObjectUtils.equals(aProjectData.getId(), v)) + { + aProjectData = null; + } + + } + + + /** + * Get the Relevance + * + * @return Integer + */ + public Integer getRelevance() + { + return relevance; + } + + + /** + * Set the value of Relevance + * + * @param v new value + */ + public void setRelevance(Integer v) + { + + + + if (!ObjectUtils.equals(this.relevance, v)) + { + this.relevance = v; + setModified(true); + } + + + } + + + + + + + + private ProjectData aProjectData; + + /** + * Declares an association between this object and a ProjectData object + * + * @param v ProjectData + * @throws TorqueException + */ + public void setProjectData(ProjectData v) throws TorqueException + { + if (v == null) + { + setProjectDataId((Integer)null); + } + else + { + setProjectDataId(v.getId()); + } + aProjectData = v; + } + + + /** + * Get the associated ProjectData object + * + * @return the associated ProjectData object + * @throws TorqueException + */ + public ProjectData getProjectData() throws TorqueException + { + if (aProjectData == null && (!ObjectUtils.equals(this.project_data_id, null))) + { + aProjectData = ProjectDataPeer.retrieveByPK(SimpleKey.keyFor(this.project_data_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + ProjectData obj = ProjectDataPeer.retrieveByPK(this.project_data_id); + obj.addProjectProjectTypes(this); + */ + } + return aProjectData; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setProjectDataKey(ObjectKey key) throws TorqueException + { + + setProjectDataId(new Integer(((NumberKey) key).intValue())); + } + + + + + private ProjectType aProjectType; + + /** + * Declares an association between this object and a ProjectType object + * + * @param v ProjectType + * @throws TorqueException + */ + public void setProjectType(ProjectType v) throws TorqueException + { + if (v == null) + { + setProjectTypeId((Integer)null); + } + else + { + setProjectTypeId(v.getId()); + } + aProjectType = v; + } + + + /** + * Get the associated ProjectType object + * + * @return the associated ProjectType object + * @throws TorqueException + */ + public ProjectType getProjectType() throws TorqueException + { + if (aProjectType == null && (!ObjectUtils.equals(this.project_type_id, null))) + { + aProjectType = ProjectTypePeer.retrieveByPK(SimpleKey.keyFor(this.project_type_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + ProjectType obj = ProjectTypePeer.retrieveByPK(this.project_type_id); + obj.addProjectProjectTypes(this); + */ + } + return aProjectType; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setProjectTypeKey(ObjectKey key) throws TorqueException + { + + setProjectTypeId(new Integer(((NumberKey) key).intValue())); + } + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("ProjectTypeId"); + fieldNames.add("ProjectDataId"); + fieldNames.add("Relevance"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("ProjectTypeId")) + { + return getProjectTypeId(); + } + if (name.equals("ProjectDataId")) + { + return getProjectDataId(); + } + if (name.equals("Relevance")) + { + return getRelevance(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(ProjectProjectTypePeer.ID)) + { + return getId(); + } + if (name.equals(ProjectProjectTypePeer.PROJECT_TYPE_ID)) + { + return getProjectTypeId(); + } + if (name.equals(ProjectProjectTypePeer.PROJECT_DATA_ID)) + { + return getProjectDataId(); + } + if (name.equals(ProjectProjectTypePeer.RELEVANCE)) + { + return getRelevance(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getProjectTypeId(); + } + if (pos == 2) + { + return getProjectDataId(); + } + if (pos == 3) + { + return getRelevance(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(ProjectProjectTypePeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + ProjectProjectTypePeer.doInsert((ProjectProjectType) this, con); + setNew(false); + } + else + { + ProjectProjectTypePeer.doUpdate((ProjectProjectType) this, con); + } + } + + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public ProjectProjectType copy() throws TorqueException + { + return copyInto(new ProjectProjectType()); + } + + protected ProjectProjectType copyInto(ProjectProjectType copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setProjectTypeId(project_type_id); + copyObj.setProjectDataId(project_data_id); + copyObj.setRelevance(relevance); + + copyObj.setNew(false); + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public ProjectProjectTypePeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseProjectProjectTypePeer.java b/src/java/org/thdl/roster/om/BaseProjectProjectTypePeer.java new file mode 100755 index 0000000..373f023 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseProjectProjectTypePeer.java @@ -0,0 +1,946 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseProjectProjectTypePeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "ProjectProjectType"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(ProjectProjectTypeMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the PROJECT_TYPE_ID field */ + public static final String PROJECT_TYPE_ID; + /** the column name for the PROJECT_DATA_ID field */ + public static final String PROJECT_DATA_ID; + /** the column name for the RELEVANCE field */ + public static final String RELEVANCE; + + static + { + ID = "ProjectProjectType.ID"; + PROJECT_TYPE_ID = "ProjectProjectType.PROJECT_TYPE_ID"; + PROJECT_DATA_ID = "ProjectProjectType.PROJECT_DATA_ID"; + RELEVANCE = "ProjectProjectType.RELEVANCE"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(ProjectProjectTypeMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 4; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.ProjectProjectType"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseProjectProjectTypePeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(PROJECT_TYPE_ID); + criteria.addSelectColumn(PROJECT_DATA_ID); + criteria.addSelectColumn(RELEVANCE); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ProjectProjectType row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + ProjectProjectType obj = (ProjectProjectType) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + ProjectProjectType obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setProjectTypeId(row.getValue(offset + 1).asIntegerObj()); + obj.setProjectDataId(row.getValue(offset + 2).asIntegerObj()); + obj.setRelevance(row.getValue(offset + 3).asIntegerObj()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseProjectProjectTypePeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(ProjectProjectTypePeer.row2Object(row, 1, + ProjectProjectTypePeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseProjectProjectTypePeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseProjectProjectTypePeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(ProjectProjectType obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(ProjectProjectType obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(ProjectProjectType obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ProjectProjectType obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(ProjectProjectType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(ProjectProjectType obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(ProjectProjectType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(ProjectProjectType obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ProjectProjectType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ProjectProjectType obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseProjectProjectTypePeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( ProjectProjectType obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(PROJECT_TYPE_ID, obj.getProjectTypeId()); + criteria.add(PROJECT_DATA_ID, obj.getProjectDataId()); + criteria.add(RELEVANCE, obj.getRelevance()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ProjectProjectType retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ProjectProjectType retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + ProjectProjectType retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ProjectProjectType retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (ProjectProjectType)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + + + /** + * selects a collection of ProjectProjectType objects pre-filled with their + * ProjectData objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in ProjectProjectTypePeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinProjectData(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + ProjectProjectTypePeer.addSelectColumns(c); + int offset = numColumns + 1; + ProjectDataPeer.addSelectColumns(c); + + + c.addJoin(ProjectProjectTypePeer.PROJECT_DATA_ID, + ProjectDataPeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = ProjectProjectTypePeer.getOMClass(); + + ProjectProjectType obj1 = (ProjectProjectType) ProjectProjectTypePeer + .row2Object(row, 1, omClass); + + + omClass = ProjectDataPeer.getOMClass(); + ProjectData obj2 = (ProjectData)ProjectDataPeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + ProjectProjectType temp_obj1 = (ProjectProjectType)results.get(j); + ProjectData temp_obj2 = (ProjectData)temp_obj1.getProjectData(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addProjectProjectType(obj1); + break; + } + } + if (newObject) + { + obj2.initProjectProjectTypes(); + obj2.addProjectProjectType(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + + /** + * selects a collection of ProjectProjectType objects pre-filled with their + * ProjectType objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in ProjectProjectTypePeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinProjectType(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + ProjectProjectTypePeer.addSelectColumns(c); + int offset = numColumns + 1; + ProjectTypePeer.addSelectColumns(c); + + + c.addJoin(ProjectProjectTypePeer.PROJECT_TYPE_ID, + ProjectTypePeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = ProjectProjectTypePeer.getOMClass(); + + ProjectProjectType obj1 = (ProjectProjectType) ProjectProjectTypePeer + .row2Object(row, 1, omClass); + + + omClass = ProjectTypePeer.getOMClass(); + ProjectType obj2 = (ProjectType)ProjectTypePeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + ProjectProjectType temp_obj1 = (ProjectProjectType)results.get(j); + ProjectType temp_obj2 = (ProjectType)temp_obj1.getProjectType(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addProjectProjectType(obj1); + break; + } + } + if (newObject) + { + obj2.initProjectProjectTypes(); + obj2.addProjectProjectType(obj1); + } + results.add(obj1); + } + return results; + } + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseProjectType.java b/src/java/org/thdl/roster/om/BaseProjectType.java new file mode 100755 index 0000000..e18f3ee --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseProjectType.java @@ -0,0 +1,561 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to ProjectType + */ +public abstract class BaseProjectType extends BaseObject +{ + /** The Peer class */ + private static final ProjectTypePeer peer = + new ProjectTypePeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the project_type field + */ + private String project_type; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + + // update associated ProjectProjectType + if (collProjectProjectTypes != null) + { + for (int i = 0; i < collProjectProjectTypes.size(); i++) + { + ((ProjectProjectType) collProjectProjectTypes.get(i)) + .setProjectTypeId(v); + } + } + } + + + /** + * Get the ProjectType + * + * @return String + */ + public String getProjectType() + { + return project_type; + } + + + /** + * Set the value of ProjectType + * + * @param v new value + */ + public void setProjectType(String v) + { + + + + if (!ObjectUtils.equals(this.project_type, v)) + { + this.project_type = v; + setModified(true); + } + + + } + + + + + + + /** + * Collection to store aggregation of collProjectProjectTypes + */ + protected List collProjectProjectTypes; + + /** + * Temporary storage of collProjectProjectTypes to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initProjectProjectTypes() + { + if (collProjectProjectTypes == null) + { + collProjectProjectTypes = new ArrayList(); + } + } + + /** + * Method called to associate a ProjectProjectType object to this object + * through the ProjectProjectType foreign key attribute + * + * @param l ProjectProjectType + * @throws TorqueException + */ + public void addProjectProjectType(ProjectProjectType l) throws TorqueException + { + getProjectProjectTypes().add(l); + l.setProjectType((ProjectType) this); + } + + /** + * The criteria used to select the current contents of collProjectProjectTypes + */ + private Criteria lastProjectProjectTypesCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getProjectProjectTypes(new Criteria()) + * + * @throws TorqueException + */ + public List getProjectProjectTypes() throws TorqueException + { + if (collProjectProjectTypes == null) + { + collProjectProjectTypes = getProjectProjectTypes(new Criteria(10)); + } + return collProjectProjectTypes; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ProjectType has previously + * been saved, it will retrieve related ProjectProjectTypes from storage. + * If this ProjectType is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getProjectProjectTypes(Criteria criteria) throws TorqueException + { + if (collProjectProjectTypes == null) + { + if (isNew()) + { + collProjectProjectTypes = new ArrayList(); + } + else + { + criteria.add(ProjectProjectTypePeer.PROJECT_TYPE_ID, getId() ); + collProjectProjectTypes = ProjectProjectTypePeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ProjectProjectTypePeer.PROJECT_TYPE_ID, getId()); + if (!lastProjectProjectTypesCriteria.equals(criteria)) + { + collProjectProjectTypes = ProjectProjectTypePeer.doSelect(criteria); + } + } + } + lastProjectProjectTypesCriteria = criteria; + + return collProjectProjectTypes; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getProjectProjectTypes(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getProjectProjectTypes(Connection con) throws TorqueException + { + if (collProjectProjectTypes == null) + { + collProjectProjectTypes = getProjectProjectTypes(new Criteria(10), con); + } + return collProjectProjectTypes; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ProjectType has previously + * been saved, it will retrieve related ProjectProjectTypes from storage. + * If this ProjectType is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getProjectProjectTypes(Criteria criteria, Connection con) + throws TorqueException + { + if (collProjectProjectTypes == null) + { + if (isNew()) + { + collProjectProjectTypes = new ArrayList(); + } + else + { + criteria.add(ProjectProjectTypePeer.PROJECT_TYPE_ID, getId()); + collProjectProjectTypes = ProjectProjectTypePeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ProjectProjectTypePeer.PROJECT_TYPE_ID, getId()); + if (!lastProjectProjectTypesCriteria.equals(criteria)) + { + collProjectProjectTypes = ProjectProjectTypePeer.doSelect(criteria, con); + } + } + } + lastProjectProjectTypesCriteria = criteria; + + return collProjectProjectTypes; + } + + + + + + + + + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("ProjectType"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("ProjectType")) + { + return getProjectType(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(ProjectTypePeer.ID)) + { + return getId(); + } + if (name.equals(ProjectTypePeer.PROJECT_TYPE)) + { + return getProjectType(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getProjectType(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(ProjectTypePeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + ProjectTypePeer.doInsert((ProjectType) this, con); + setNew(false); + } + else + { + ProjectTypePeer.doUpdate((ProjectType) this, con); + } + } + + + + if (collProjectProjectTypes != null) + { + for (int i = 0; i < collProjectProjectTypes.size(); i++) + { + ((ProjectProjectType) collProjectProjectTypes.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public ProjectType copy() throws TorqueException + { + return copyInto(new ProjectType()); + } + + protected ProjectType copyInto(ProjectType copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setProjectType(project_type); + + copyObj.setNew(false); + + + List v = getProjectProjectTypes(); + for (int i = 0; i < v.size(); i++) + { + ProjectProjectType obj = (ProjectProjectType) v.get(i); + copyObj.addProjectProjectType(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public ProjectTypePeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseProjectTypePeer.java b/src/java/org/thdl/roster/om/BaseProjectTypePeer.java new file mode 100755 index 0000000..4c71a83 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseProjectTypePeer.java @@ -0,0 +1,778 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseProjectTypePeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "ProjectType"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(ProjectTypeMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the PROJECT_TYPE field */ + public static final String PROJECT_TYPE; + + static + { + ID = "ProjectType.ID"; + PROJECT_TYPE = "ProjectType.PROJECT_TYPE"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(ProjectTypeMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 2; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.ProjectType"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseProjectTypePeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(PROJECT_TYPE); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ProjectType row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + ProjectType obj = (ProjectType) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + ProjectType obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setProjectType(row.getValue(offset + 1).asString()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseProjectTypePeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(ProjectTypePeer.row2Object(row, 1, + ProjectTypePeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseProjectTypePeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseProjectTypePeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(ProjectType obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(ProjectType obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(ProjectType obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ProjectType obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(ProjectType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(ProjectType obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(ProjectType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(ProjectType obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ProjectType) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ProjectType obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseProjectTypePeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( ProjectType obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(PROJECT_TYPE, obj.getProjectType()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ProjectType retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ProjectType retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + ProjectType retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ProjectType retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (ProjectType)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BasePublication.java b/src/java/org/thdl/roster/om/BasePublication.java new file mode 100755 index 0000000..db38636 --- /dev/null +++ b/src/java/org/thdl/roster/om/BasePublication.java @@ -0,0 +1,693 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to Publication + */ +public abstract class BasePublication extends BaseObject +{ + /** The Peer class */ + private static final PublicationPeer peer = + new PublicationPeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the formal_publications field + */ + private String formal_publications; + + /** + * The value for the works_in_progress field + */ + private String works_in_progress; + + /** + * The value for the projects field + */ + private String projects; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + + // update associated Member + if (collMembers != null) + { + for (int i = 0; i < collMembers.size(); i++) + { + ((Member) collMembers.get(i)) + .setPublicationId(v); + } + } + } + + + /** + * Get the FormalPublications + * + * @return String + */ + public String getFormalPublications() + { + return formal_publications; + } + + + /** + * Set the value of FormalPublications + * + * @param v new value + */ + public void setFormalPublications(String v) + { + + + + if (!ObjectUtils.equals(this.formal_publications, v)) + { + this.formal_publications = v; + setModified(true); + } + + + } + + + /** + * Get the WorksInProgress + * + * @return String + */ + public String getWorksInProgress() + { + return works_in_progress; + } + + + /** + * Set the value of WorksInProgress + * + * @param v new value + */ + public void setWorksInProgress(String v) + { + + + + if (!ObjectUtils.equals(this.works_in_progress, v)) + { + this.works_in_progress = v; + setModified(true); + } + + + } + + + /** + * Get the Projects + * + * @return String + */ + public String getProjects() + { + return projects; + } + + + /** + * Set the value of Projects + * + * @param v new value + */ + public void setProjects(String v) + { + + + + if (!ObjectUtils.equals(this.projects, v)) + { + this.projects = v; + setModified(true); + } + + + } + + + + + + + /** + * Collection to store aggregation of collMembers + */ + protected List collMembers; + + /** + * Temporary storage of collMembers to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initMembers() + { + if (collMembers == null) + { + collMembers = new ArrayList(); + } + } + + /** + * Method called to associate a Member object to this object + * through the Member foreign key attribute + * + * @param l Member + * @throws TorqueException + */ + public void addMember(Member l) throws TorqueException + { + getMembers().add(l); + l.setPublication((Publication) this); + } + + /** + * The criteria used to select the current contents of collMembers + */ + private Criteria lastMembersCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getMembers(new Criteria()) + * + * @throws TorqueException + */ + public List getMembers() throws TorqueException + { + if (collMembers == null) + { + collMembers = getMembers(new Criteria(10)); + } + return collMembers; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this Publication has previously + * been saved, it will retrieve related Members from storage. + * If this Publication is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getMembers(Criteria criteria) throws TorqueException + { + if (collMembers == null) + { + if (isNew()) + { + collMembers = new ArrayList(); + } + else + { + criteria.add(MemberPeer.PUBLICATION_ID, getId() ); + collMembers = MemberPeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(MemberPeer.PUBLICATION_ID, getId()); + if (!lastMembersCriteria.equals(criteria)) + { + collMembers = MemberPeer.doSelect(criteria); + } + } + } + lastMembersCriteria = criteria; + + return collMembers; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getMembers(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getMembers(Connection con) throws TorqueException + { + if (collMembers == null) + { + collMembers = getMembers(new Criteria(10), con); + } + return collMembers; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this Publication has previously + * been saved, it will retrieve related Members from storage. + * If this Publication is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getMembers(Criteria criteria, Connection con) + throws TorqueException + { + if (collMembers == null) + { + if (isNew()) + { + collMembers = new ArrayList(); + } + else + { + criteria.add(MemberPeer.PUBLICATION_ID, getId()); + collMembers = MemberPeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(MemberPeer.PUBLICATION_ID, getId()); + if (!lastMembersCriteria.equals(criteria)) + { + collMembers = MemberPeer.doSelect(criteria, con); + } + } + } + lastMembersCriteria = criteria; + + return collMembers; + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("FormalPublications"); + fieldNames.add("WorksInProgress"); + fieldNames.add("Projects"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("FormalPublications")) + { + return getFormalPublications(); + } + if (name.equals("WorksInProgress")) + { + return getWorksInProgress(); + } + if (name.equals("Projects")) + { + return getProjects(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(PublicationPeer.ID)) + { + return getId(); + } + if (name.equals(PublicationPeer.FORMAL_PUBLICATIONS)) + { + return getFormalPublications(); + } + if (name.equals(PublicationPeer.WORKS_IN_PROGRESS)) + { + return getWorksInProgress(); + } + if (name.equals(PublicationPeer.PROJECTS)) + { + return getProjects(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getFormalPublications(); + } + if (pos == 2) + { + return getWorksInProgress(); + } + if (pos == 3) + { + return getProjects(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(PublicationPeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + PublicationPeer.doInsert((Publication) this, con); + setNew(false); + } + else + { + PublicationPeer.doUpdate((Publication) this, con); + } + } + + + + if (collMembers != null) + { + for (int i = 0; i < collMembers.size(); i++) + { + ((Member) collMembers.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public Publication copy() throws TorqueException + { + return copyInto(new Publication()); + } + + protected Publication copyInto(Publication copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setFormalPublications(formal_publications); + copyObj.setWorksInProgress(works_in_progress); + copyObj.setProjects(projects); + + copyObj.setNew(false); + + + List v = getMembers(); + for (int i = 0; i < v.size(); i++) + { + Member obj = (Member) v.get(i); + copyObj.addMember(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public PublicationPeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BasePublicationPeer.java b/src/java/org/thdl/roster/om/BasePublicationPeer.java new file mode 100755 index 0000000..bdd5cad --- /dev/null +++ b/src/java/org/thdl/roster/om/BasePublicationPeer.java @@ -0,0 +1,790 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BasePublicationPeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "Publication"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(PublicationMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the FORMAL_PUBLICATIONS field */ + public static final String FORMAL_PUBLICATIONS; + /** the column name for the WORKS_IN_PROGRESS field */ + public static final String WORKS_IN_PROGRESS; + /** the column name for the PROJECTS field */ + public static final String PROJECTS; + + static + { + ID = "Publication.ID"; + FORMAL_PUBLICATIONS = "Publication.FORMAL_PUBLICATIONS"; + WORKS_IN_PROGRESS = "Publication.WORKS_IN_PROGRESS"; + PROJECTS = "Publication.PROJECTS"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(PublicationMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 4; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.Publication"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BasePublicationPeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(FORMAL_PUBLICATIONS); + criteria.addSelectColumn(WORKS_IN_PROGRESS); + criteria.addSelectColumn(PROJECTS); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Publication row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + Publication obj = (Publication) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + Publication obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setFormalPublications(row.getValue(offset + 1).asString()); + obj.setWorksInProgress(row.getValue(offset + 2).asString()); + obj.setProjects(row.getValue(offset + 3).asString()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BasePublicationPeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(PublicationPeer.row2Object(row, 1, + PublicationPeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BasePublicationPeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BasePublicationPeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Publication obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(Publication obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Publication obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Publication obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Publication) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(Publication obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(Publication) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Publication obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(Publication) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Publication obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BasePublicationPeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( Publication obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(FORMAL_PUBLICATIONS, obj.getFormalPublications()); + criteria.add(WORKS_IN_PROGRESS, obj.getWorksInProgress()); + criteria.add(PROJECTS, obj.getProjects()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Publication retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Publication retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + Publication retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Publication retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (Publication)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseResearchInterest.java b/src/java/org/thdl/roster/om/BaseResearchInterest.java new file mode 100755 index 0000000..5f599f3 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseResearchInterest.java @@ -0,0 +1,1432 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to ResearchInterest + */ +public abstract class BaseResearchInterest extends BaseObject +{ + /** The Peer class */ + private static final ResearchInterestPeer peer = + new ResearchInterestPeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the interests field + */ + private String interests; + + /** + * The value for the activities field + */ + private String activities; + + /** + * The value for the collaboration_interests field + */ + private String collaboration_interests; + + /** + * The value for the focus_from field + */ + private Integer focus_from; + + /** + * The value for the focus_to field + */ + private Integer focus_to; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + + // update associated Member + if (collMembers != null) + { + for (int i = 0; i < collMembers.size(); i++) + { + ((Member) collMembers.get(i)) + .setResearchInterestId(v); + } + } + + // update associated ResearchInterestLanguage + if (collResearchInterestLanguages != null) + { + for (int i = 0; i < collResearchInterestLanguages.size(); i++) + { + ((ResearchInterestLanguage) collResearchInterestLanguages.get(i)) + .setResearchInterestId(v); + } + } + + // update associated ResearchInterestCulturalArea + if (collResearchInterestCulturalAreas != null) + { + for (int i = 0; i < collResearchInterestCulturalAreas.size(); i++) + { + ((ResearchInterestCulturalArea) collResearchInterestCulturalAreas.get(i)) + .setResearchInterestId(v); + } + } + + // update associated ResearchInterestDiscipline + if (collResearchInterestDisciplines != null) + { + for (int i = 0; i < collResearchInterestDisciplines.size(); i++) + { + ((ResearchInterestDiscipline) collResearchInterestDisciplines.get(i)) + .setResearchInterestId(v); + } + } + } + + + /** + * Get the Interests + * + * @return String + */ + public String getInterests() + { + return interests; + } + + + /** + * Set the value of Interests + * + * @param v new value + */ + public void setInterests(String v) + { + + + + if (!ObjectUtils.equals(this.interests, v)) + { + this.interests = v; + setModified(true); + } + + + } + + + /** + * Get the Activities + * + * @return String + */ + public String getActivities() + { + return activities; + } + + + /** + * Set the value of Activities + * + * @param v new value + */ + public void setActivities(String v) + { + + + + if (!ObjectUtils.equals(this.activities, v)) + { + this.activities = v; + setModified(true); + } + + + } + + + /** + * Get the CollaborationInterests + * + * @return String + */ + public String getCollaborationInterests() + { + return collaboration_interests; + } + + + /** + * Set the value of CollaborationInterests + * + * @param v new value + */ + public void setCollaborationInterests(String v) + { + + + + if (!ObjectUtils.equals(this.collaboration_interests, v)) + { + this.collaboration_interests = v; + setModified(true); + } + + + } + + + /** + * Get the FocusFrom + * + * @return Integer + */ + public Integer getFocusFrom() + { + return focus_from; + } + + + /** + * Set the value of FocusFrom + * + * @param v new value + */ + public void setFocusFrom(Integer v) + { + + + + if (!ObjectUtils.equals(this.focus_from, v)) + { + this.focus_from = v; + setModified(true); + } + + + } + + + /** + * Get the FocusTo + * + * @return Integer + */ + public Integer getFocusTo() + { + return focus_to; + } + + + /** + * Set the value of FocusTo + * + * @param v new value + */ + public void setFocusTo(Integer v) + { + + + + if (!ObjectUtils.equals(this.focus_to, v)) + { + this.focus_to = v; + setModified(true); + } + + + } + + + + + + + /** + * Collection to store aggregation of collMembers + */ + protected List collMembers; + + /** + * Temporary storage of collMembers to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initMembers() + { + if (collMembers == null) + { + collMembers = new ArrayList(); + } + } + + /** + * Method called to associate a Member object to this object + * through the Member foreign key attribute + * + * @param l Member + * @throws TorqueException + */ + public void addMember(Member l) throws TorqueException + { + getMembers().add(l); + l.setResearchInterest((ResearchInterest) this); + } + + /** + * The criteria used to select the current contents of collMembers + */ + private Criteria lastMembersCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getMembers(new Criteria()) + * + * @throws TorqueException + */ + public List getMembers() throws TorqueException + { + if (collMembers == null) + { + collMembers = getMembers(new Criteria(10)); + } + return collMembers; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ResearchInterest has previously + * been saved, it will retrieve related Members from storage. + * If this ResearchInterest is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getMembers(Criteria criteria) throws TorqueException + { + if (collMembers == null) + { + if (isNew()) + { + collMembers = new ArrayList(); + } + else + { + criteria.add(MemberPeer.RESEARCH_INTEREST_ID, getId() ); + collMembers = MemberPeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(MemberPeer.RESEARCH_INTEREST_ID, getId()); + if (!lastMembersCriteria.equals(criteria)) + { + collMembers = MemberPeer.doSelect(criteria); + } + } + } + lastMembersCriteria = criteria; + + return collMembers; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getMembers(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getMembers(Connection con) throws TorqueException + { + if (collMembers == null) + { + collMembers = getMembers(new Criteria(10), con); + } + return collMembers; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ResearchInterest has previously + * been saved, it will retrieve related Members from storage. + * If this ResearchInterest is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getMembers(Criteria criteria, Connection con) + throws TorqueException + { + if (collMembers == null) + { + if (isNew()) + { + collMembers = new ArrayList(); + } + else + { + criteria.add(MemberPeer.RESEARCH_INTEREST_ID, getId()); + collMembers = MemberPeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(MemberPeer.RESEARCH_INTEREST_ID, getId()); + if (!lastMembersCriteria.equals(criteria)) + { + collMembers = MemberPeer.doSelect(criteria, con); + } + } + } + lastMembersCriteria = criteria; + + return collMembers; + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /** + * Collection to store aggregation of collResearchInterestLanguages + */ + protected List collResearchInterestLanguages; + + /** + * Temporary storage of collResearchInterestLanguages to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initResearchInterestLanguages() + { + if (collResearchInterestLanguages == null) + { + collResearchInterestLanguages = new ArrayList(); + } + } + + /** + * Method called to associate a ResearchInterestLanguage object to this object + * through the ResearchInterestLanguage foreign key attribute + * + * @param l ResearchInterestLanguage + * @throws TorqueException + */ + public void addResearchInterestLanguage(ResearchInterestLanguage l) throws TorqueException + { + getResearchInterestLanguages().add(l); + l.setResearchInterest((ResearchInterest) this); + } + + /** + * The criteria used to select the current contents of collResearchInterestLanguages + */ + private Criteria lastResearchInterestLanguagesCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getResearchInterestLanguages(new Criteria()) + * + * @throws TorqueException + */ + public List getResearchInterestLanguages() throws TorqueException + { + if (collResearchInterestLanguages == null) + { + collResearchInterestLanguages = getResearchInterestLanguages(new Criteria(10)); + } + return collResearchInterestLanguages; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ResearchInterest has previously + * been saved, it will retrieve related ResearchInterestLanguages from storage. + * If this ResearchInterest is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getResearchInterestLanguages(Criteria criteria) throws TorqueException + { + if (collResearchInterestLanguages == null) + { + if (isNew()) + { + collResearchInterestLanguages = new ArrayList(); + } + else + { + criteria.add(ResearchInterestLanguagePeer.RESEARCH_INTEREST_ID, getId() ); + collResearchInterestLanguages = ResearchInterestLanguagePeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ResearchInterestLanguagePeer.RESEARCH_INTEREST_ID, getId()); + if (!lastResearchInterestLanguagesCriteria.equals(criteria)) + { + collResearchInterestLanguages = ResearchInterestLanguagePeer.doSelect(criteria); + } + } + } + lastResearchInterestLanguagesCriteria = criteria; + + return collResearchInterestLanguages; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getResearchInterestLanguages(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getResearchInterestLanguages(Connection con) throws TorqueException + { + if (collResearchInterestLanguages == null) + { + collResearchInterestLanguages = getResearchInterestLanguages(new Criteria(10), con); + } + return collResearchInterestLanguages; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ResearchInterest has previously + * been saved, it will retrieve related ResearchInterestLanguages from storage. + * If this ResearchInterest is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getResearchInterestLanguages(Criteria criteria, Connection con) + throws TorqueException + { + if (collResearchInterestLanguages == null) + { + if (isNew()) + { + collResearchInterestLanguages = new ArrayList(); + } + else + { + criteria.add(ResearchInterestLanguagePeer.RESEARCH_INTEREST_ID, getId()); + collResearchInterestLanguages = ResearchInterestLanguagePeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ResearchInterestLanguagePeer.RESEARCH_INTEREST_ID, getId()); + if (!lastResearchInterestLanguagesCriteria.equals(criteria)) + { + collResearchInterestLanguages = ResearchInterestLanguagePeer.doSelect(criteria, con); + } + } + } + lastResearchInterestLanguagesCriteria = criteria; + + return collResearchInterestLanguages; + } + + + + + + + + + + + + + + + + + + + + + + + + + + /** + * Collection to store aggregation of collResearchInterestCulturalAreas + */ + protected List collResearchInterestCulturalAreas; + + /** + * Temporary storage of collResearchInterestCulturalAreas to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initResearchInterestCulturalAreas() + { + if (collResearchInterestCulturalAreas == null) + { + collResearchInterestCulturalAreas = new ArrayList(); + } + } + + /** + * Method called to associate a ResearchInterestCulturalArea object to this object + * through the ResearchInterestCulturalArea foreign key attribute + * + * @param l ResearchInterestCulturalArea + * @throws TorqueException + */ + public void addResearchInterestCulturalArea(ResearchInterestCulturalArea l) throws TorqueException + { + getResearchInterestCulturalAreas().add(l); + l.setResearchInterest((ResearchInterest) this); + } + + /** + * The criteria used to select the current contents of collResearchInterestCulturalAreas + */ + private Criteria lastResearchInterestCulturalAreasCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getResearchInterestCulturalAreas(new Criteria()) + * + * @throws TorqueException + */ + public List getResearchInterestCulturalAreas() throws TorqueException + { + if (collResearchInterestCulturalAreas == null) + { + collResearchInterestCulturalAreas = getResearchInterestCulturalAreas(new Criteria(10)); + } + return collResearchInterestCulturalAreas; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ResearchInterest has previously + * been saved, it will retrieve related ResearchInterestCulturalAreas from storage. + * If this ResearchInterest is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getResearchInterestCulturalAreas(Criteria criteria) throws TorqueException + { + if (collResearchInterestCulturalAreas == null) + { + if (isNew()) + { + collResearchInterestCulturalAreas = new ArrayList(); + } + else + { + criteria.add(ResearchInterestCulturalAreaPeer.RESEARCH_INTEREST_ID, getId() ); + collResearchInterestCulturalAreas = ResearchInterestCulturalAreaPeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ResearchInterestCulturalAreaPeer.RESEARCH_INTEREST_ID, getId()); + if (!lastResearchInterestCulturalAreasCriteria.equals(criteria)) + { + collResearchInterestCulturalAreas = ResearchInterestCulturalAreaPeer.doSelect(criteria); + } + } + } + lastResearchInterestCulturalAreasCriteria = criteria; + + return collResearchInterestCulturalAreas; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getResearchInterestCulturalAreas(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getResearchInterestCulturalAreas(Connection con) throws TorqueException + { + if (collResearchInterestCulturalAreas == null) + { + collResearchInterestCulturalAreas = getResearchInterestCulturalAreas(new Criteria(10), con); + } + return collResearchInterestCulturalAreas; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ResearchInterest has previously + * been saved, it will retrieve related ResearchInterestCulturalAreas from storage. + * If this ResearchInterest is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getResearchInterestCulturalAreas(Criteria criteria, Connection con) + throws TorqueException + { + if (collResearchInterestCulturalAreas == null) + { + if (isNew()) + { + collResearchInterestCulturalAreas = new ArrayList(); + } + else + { + criteria.add(ResearchInterestCulturalAreaPeer.RESEARCH_INTEREST_ID, getId()); + collResearchInterestCulturalAreas = ResearchInterestCulturalAreaPeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ResearchInterestCulturalAreaPeer.RESEARCH_INTEREST_ID, getId()); + if (!lastResearchInterestCulturalAreasCriteria.equals(criteria)) + { + collResearchInterestCulturalAreas = ResearchInterestCulturalAreaPeer.doSelect(criteria, con); + } + } + } + lastResearchInterestCulturalAreasCriteria = criteria; + + return collResearchInterestCulturalAreas; + } + + + + + + + + + + + + + + + + + + + + + + + + + + /** + * Collection to store aggregation of collResearchInterestDisciplines + */ + protected List collResearchInterestDisciplines; + + /** + * Temporary storage of collResearchInterestDisciplines to save a possible db hit in + * the event objects are add to the collection, but the + * complete collection is never requested. + */ + protected void initResearchInterestDisciplines() + { + if (collResearchInterestDisciplines == null) + { + collResearchInterestDisciplines = new ArrayList(); + } + } + + /** + * Method called to associate a ResearchInterestDiscipline object to this object + * through the ResearchInterestDiscipline foreign key attribute + * + * @param l ResearchInterestDiscipline + * @throws TorqueException + */ + public void addResearchInterestDiscipline(ResearchInterestDiscipline l) throws TorqueException + { + getResearchInterestDisciplines().add(l); + l.setResearchInterest((ResearchInterest) this); + } + + /** + * The criteria used to select the current contents of collResearchInterestDisciplines + */ + private Criteria lastResearchInterestDisciplinesCriteria = null; + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getResearchInterestDisciplines(new Criteria()) + * + * @throws TorqueException + */ + public List getResearchInterestDisciplines() throws TorqueException + { + if (collResearchInterestDisciplines == null) + { + collResearchInterestDisciplines = getResearchInterestDisciplines(new Criteria(10)); + } + return collResearchInterestDisciplines; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ResearchInterest has previously + * been saved, it will retrieve related ResearchInterestDisciplines from storage. + * If this ResearchInterest is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * + * @throws TorqueException + */ + public List getResearchInterestDisciplines(Criteria criteria) throws TorqueException + { + if (collResearchInterestDisciplines == null) + { + if (isNew()) + { + collResearchInterestDisciplines = new ArrayList(); + } + else + { + criteria.add(ResearchInterestDisciplinePeer.RESEARCH_INTEREST_ID, getId() ); + collResearchInterestDisciplines = ResearchInterestDisciplinePeer.doSelect(criteria); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ResearchInterestDisciplinePeer.RESEARCH_INTEREST_ID, getId()); + if (!lastResearchInterestDisciplinesCriteria.equals(criteria)) + { + collResearchInterestDisciplines = ResearchInterestDisciplinePeer.doSelect(criteria); + } + } + } + lastResearchInterestDisciplinesCriteria = criteria; + + return collResearchInterestDisciplines; + } + + /** + * If this collection has already been initialized, returns + * the collection. Otherwise returns the results of + * getResearchInterestDisciplines(new Criteria(),Connection) + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getResearchInterestDisciplines(Connection con) throws TorqueException + { + if (collResearchInterestDisciplines == null) + { + collResearchInterestDisciplines = getResearchInterestDisciplines(new Criteria(10), con); + } + return collResearchInterestDisciplines; + } + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ResearchInterest has previously + * been saved, it will retrieve related ResearchInterestDisciplines from storage. + * If this ResearchInterest is new, it will return + * an empty collection or the current collection, the criteria + * is ignored on a new object. + * This method takes in the Connection also as input so that + * referenced objects can also be obtained using a Connection + * that is taken as input + */ + public List getResearchInterestDisciplines(Criteria criteria, Connection con) + throws TorqueException + { + if (collResearchInterestDisciplines == null) + { + if (isNew()) + { + collResearchInterestDisciplines = new ArrayList(); + } + else + { + criteria.add(ResearchInterestDisciplinePeer.RESEARCH_INTEREST_ID, getId()); + collResearchInterestDisciplines = ResearchInterestDisciplinePeer.doSelect(criteria, con); + } + } + else + { + // criteria has no effect for a new object + if (!isNew()) + { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. + criteria.add(ResearchInterestDisciplinePeer.RESEARCH_INTEREST_ID, getId()); + if (!lastResearchInterestDisciplinesCriteria.equals(criteria)) + { + collResearchInterestDisciplines = ResearchInterestDisciplinePeer.doSelect(criteria, con); + } + } + } + lastResearchInterestDisciplinesCriteria = criteria; + + return collResearchInterestDisciplines; + } + + + + + + + + + + + + + + + + + + + + + + + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("Interests"); + fieldNames.add("Activities"); + fieldNames.add("CollaborationInterests"); + fieldNames.add("FocusFrom"); + fieldNames.add("FocusTo"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("Interests")) + { + return getInterests(); + } + if (name.equals("Activities")) + { + return getActivities(); + } + if (name.equals("CollaborationInterests")) + { + return getCollaborationInterests(); + } + if (name.equals("FocusFrom")) + { + return getFocusFrom(); + } + if (name.equals("FocusTo")) + { + return getFocusTo(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(ResearchInterestPeer.ID)) + { + return getId(); + } + if (name.equals(ResearchInterestPeer.INTERESTS)) + { + return getInterests(); + } + if (name.equals(ResearchInterestPeer.ACTIVITIES)) + { + return getActivities(); + } + if (name.equals(ResearchInterestPeer.COLLABORATION_INTERESTS)) + { + return getCollaborationInterests(); + } + if (name.equals(ResearchInterestPeer.FOCUS_FROM)) + { + return getFocusFrom(); + } + if (name.equals(ResearchInterestPeer.FOCUS_TO)) + { + return getFocusTo(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getInterests(); + } + if (pos == 2) + { + return getActivities(); + } + if (pos == 3) + { + return getCollaborationInterests(); + } + if (pos == 4) + { + return getFocusFrom(); + } + if (pos == 5) + { + return getFocusTo(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(ResearchInterestPeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + ResearchInterestPeer.doInsert((ResearchInterest) this, con); + setNew(false); + } + else + { + ResearchInterestPeer.doUpdate((ResearchInterest) this, con); + } + } + + + + if (collMembers != null) + { + for (int i = 0; i < collMembers.size(); i++) + { + ((Member) collMembers.get(i)).save(con); + } + } + + + if (collResearchInterestLanguages != null) + { + for (int i = 0; i < collResearchInterestLanguages.size(); i++) + { + ((ResearchInterestLanguage) collResearchInterestLanguages.get(i)).save(con); + } + } + + + if (collResearchInterestCulturalAreas != null) + { + for (int i = 0; i < collResearchInterestCulturalAreas.size(); i++) + { + ((ResearchInterestCulturalArea) collResearchInterestCulturalAreas.get(i)).save(con); + } + } + + + if (collResearchInterestDisciplines != null) + { + for (int i = 0; i < collResearchInterestDisciplines.size(); i++) + { + ((ResearchInterestDiscipline) collResearchInterestDisciplines.get(i)).save(con); + } + } + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + throws TorqueException + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) throws TorqueException + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public ResearchInterest copy() throws TorqueException + { + return copyInto(new ResearchInterest()); + } + + protected ResearchInterest copyInto(ResearchInterest copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setInterests(interests); + copyObj.setActivities(activities); + copyObj.setCollaborationInterests(collaboration_interests); + copyObj.setFocusFrom(focus_from); + copyObj.setFocusTo(focus_to); + + copyObj.setNew(false); + + + List v = getMembers(); + for (int i = 0; i < v.size(); i++) + { + Member obj = (Member) v.get(i); + copyObj.addMember(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + + + v = getResearchInterestLanguages(); + for (int i = 0; i < v.size(); i++) + { + ResearchInterestLanguage obj = (ResearchInterestLanguage) v.get(i); + copyObj.addResearchInterestLanguage(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + + + v = getResearchInterestCulturalAreas(); + for (int i = 0; i < v.size(); i++) + { + ResearchInterestCulturalArea obj = (ResearchInterestCulturalArea) v.get(i); + copyObj.addResearchInterestCulturalArea(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + + + v = getResearchInterestDisciplines(); + for (int i = 0; i < v.size(); i++) + { + ResearchInterestDiscipline obj = (ResearchInterestDiscipline) v.get(i); + copyObj.addResearchInterestDiscipline(obj.copy()); + ((Persistent) v.get(i)).setNew(true); + } + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public ResearchInterestPeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseResearchInterestCulturalArea.java b/src/java/org/thdl/roster/om/BaseResearchInterestCulturalArea.java new file mode 100755 index 0000000..5c15b53 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseResearchInterestCulturalArea.java @@ -0,0 +1,584 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to ResearchInterestCulturalArea + */ +public abstract class BaseResearchInterestCulturalArea extends BaseObject +{ + /** The Peer class */ + private static final ResearchInterestCulturalAreaPeer peer = + new ResearchInterestCulturalAreaPeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the cultural_area_id field + */ + private Integer cultural_area_id; + + /** + * The value for the research_interest_id field + */ + private Integer research_interest_id; + + /** + * The value for the relevance field + */ + private Integer relevance; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + } + + + /** + * Get the CulturalAreaId + * + * @return Integer + */ + public Integer getCulturalAreaId() + { + return cultural_area_id; + } + + + /** + * Set the value of CulturalAreaId + * + * @param v new value + */ + public void setCulturalAreaId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.cultural_area_id, v)) + { + this.cultural_area_id = v; + setModified(true); + } + + + if (aCulturalArea != null && !ObjectUtils.equals(aCulturalArea.getId(), v)) + { + aCulturalArea = null; + } + + } + + + /** + * Get the ResearchInterestId + * + * @return Integer + */ + public Integer getResearchInterestId() + { + return research_interest_id; + } + + + /** + * Set the value of ResearchInterestId + * + * @param v new value + */ + public void setResearchInterestId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.research_interest_id, v)) + { + this.research_interest_id = v; + setModified(true); + } + + + if (aResearchInterest != null && !ObjectUtils.equals(aResearchInterest.getId(), v)) + { + aResearchInterest = null; + } + + } + + + /** + * Get the Relevance + * + * @return Integer + */ + public Integer getRelevance() + { + return relevance; + } + + + /** + * Set the value of Relevance + * + * @param v new value + */ + public void setRelevance(Integer v) + { + + + + if (!ObjectUtils.equals(this.relevance, v)) + { + this.relevance = v; + setModified(true); + } + + + } + + + + + + + + private ResearchInterest aResearchInterest; + + /** + * Declares an association between this object and a ResearchInterest object + * + * @param v ResearchInterest + * @throws TorqueException + */ + public void setResearchInterest(ResearchInterest v) throws TorqueException + { + if (v == null) + { + setResearchInterestId((Integer)null); + } + else + { + setResearchInterestId(v.getId()); + } + aResearchInterest = v; + } + + + /** + * Get the associated ResearchInterest object + * + * @return the associated ResearchInterest object + * @throws TorqueException + */ + public ResearchInterest getResearchInterest() throws TorqueException + { + if (aResearchInterest == null && (!ObjectUtils.equals(this.research_interest_id, null))) + { + aResearchInterest = ResearchInterestPeer.retrieveByPK(SimpleKey.keyFor(this.research_interest_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + ResearchInterest obj = ResearchInterestPeer.retrieveByPK(this.research_interest_id); + obj.addResearchInterestCulturalAreas(this); + */ + } + return aResearchInterest; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setResearchInterestKey(ObjectKey key) throws TorqueException + { + + setResearchInterestId(new Integer(((NumberKey) key).intValue())); + } + + + + + private CulturalArea aCulturalArea; + + /** + * Declares an association between this object and a CulturalArea object + * + * @param v CulturalArea + * @throws TorqueException + */ + public void setCulturalArea(CulturalArea v) throws TorqueException + { + if (v == null) + { + setCulturalAreaId((Integer)null); + } + else + { + setCulturalAreaId(v.getId()); + } + aCulturalArea = v; + } + + + /** + * Get the associated CulturalArea object + * + * @return the associated CulturalArea object + * @throws TorqueException + */ + public CulturalArea getCulturalArea() throws TorqueException + { + if (aCulturalArea == null && (!ObjectUtils.equals(this.cultural_area_id, null))) + { + aCulturalArea = CulturalAreaPeer.retrieveByPK(SimpleKey.keyFor(this.cultural_area_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + CulturalArea obj = CulturalAreaPeer.retrieveByPK(this.cultural_area_id); + obj.addResearchInterestCulturalAreas(this); + */ + } + return aCulturalArea; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setCulturalAreaKey(ObjectKey key) throws TorqueException + { + + setCulturalAreaId(new Integer(((NumberKey) key).intValue())); + } + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("CulturalAreaId"); + fieldNames.add("ResearchInterestId"); + fieldNames.add("Relevance"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("CulturalAreaId")) + { + return getCulturalAreaId(); + } + if (name.equals("ResearchInterestId")) + { + return getResearchInterestId(); + } + if (name.equals("Relevance")) + { + return getRelevance(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(ResearchInterestCulturalAreaPeer.ID)) + { + return getId(); + } + if (name.equals(ResearchInterestCulturalAreaPeer.CULTURAL_AREA_ID)) + { + return getCulturalAreaId(); + } + if (name.equals(ResearchInterestCulturalAreaPeer.RESEARCH_INTEREST_ID)) + { + return getResearchInterestId(); + } + if (name.equals(ResearchInterestCulturalAreaPeer.RELEVANCE)) + { + return getRelevance(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getCulturalAreaId(); + } + if (pos == 2) + { + return getResearchInterestId(); + } + if (pos == 3) + { + return getRelevance(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(ResearchInterestCulturalAreaPeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + ResearchInterestCulturalAreaPeer.doInsert((ResearchInterestCulturalArea) this, con); + setNew(false); + } + else + { + ResearchInterestCulturalAreaPeer.doUpdate((ResearchInterestCulturalArea) this, con); + } + } + + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public ResearchInterestCulturalArea copy() throws TorqueException + { + return copyInto(new ResearchInterestCulturalArea()); + } + + protected ResearchInterestCulturalArea copyInto(ResearchInterestCulturalArea copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setCulturalAreaId(cultural_area_id); + copyObj.setResearchInterestId(research_interest_id); + copyObj.setRelevance(relevance); + + copyObj.setNew(false); + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public ResearchInterestCulturalAreaPeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseResearchInterestCulturalAreaPeer.java b/src/java/org/thdl/roster/om/BaseResearchInterestCulturalAreaPeer.java new file mode 100755 index 0000000..bd7982d --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseResearchInterestCulturalAreaPeer.java @@ -0,0 +1,946 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseResearchInterestCulturalAreaPeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "ResearchInterestCulturalArea"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(ResearchInterestCulturalAreaMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the CULTURAL_AREA_ID field */ + public static final String CULTURAL_AREA_ID; + /** the column name for the RESEARCH_INTEREST_ID field */ + public static final String RESEARCH_INTEREST_ID; + /** the column name for the RELEVANCE field */ + public static final String RELEVANCE; + + static + { + ID = "ResearchInterestCulturalArea.ID"; + CULTURAL_AREA_ID = "ResearchInterestCulturalArea.CULTURAL_AREA_ID"; + RESEARCH_INTEREST_ID = "ResearchInterestCulturalArea.RESEARCH_INTEREST_ID"; + RELEVANCE = "ResearchInterestCulturalArea.RELEVANCE"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(ResearchInterestCulturalAreaMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 4; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.ResearchInterestCulturalArea"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseResearchInterestCulturalAreaPeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(CULTURAL_AREA_ID); + criteria.addSelectColumn(RESEARCH_INTEREST_ID); + criteria.addSelectColumn(RELEVANCE); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ResearchInterestCulturalArea row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + ResearchInterestCulturalArea obj = (ResearchInterestCulturalArea) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + ResearchInterestCulturalArea obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setCulturalAreaId(row.getValue(offset + 1).asIntegerObj()); + obj.setResearchInterestId(row.getValue(offset + 2).asIntegerObj()); + obj.setRelevance(row.getValue(offset + 3).asIntegerObj()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseResearchInterestCulturalAreaPeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(ResearchInterestCulturalAreaPeer.row2Object(row, 1, + ResearchInterestCulturalAreaPeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseResearchInterestCulturalAreaPeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseResearchInterestCulturalAreaPeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(ResearchInterestCulturalArea obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(ResearchInterestCulturalArea obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(ResearchInterestCulturalArea obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ResearchInterestCulturalArea obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(ResearchInterestCulturalArea) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(ResearchInterestCulturalArea obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(ResearchInterestCulturalArea) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(ResearchInterestCulturalArea obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ResearchInterestCulturalArea) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ResearchInterestCulturalArea obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseResearchInterestCulturalAreaPeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( ResearchInterestCulturalArea obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(CULTURAL_AREA_ID, obj.getCulturalAreaId()); + criteria.add(RESEARCH_INTEREST_ID, obj.getResearchInterestId()); + criteria.add(RELEVANCE, obj.getRelevance()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ResearchInterestCulturalArea retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ResearchInterestCulturalArea retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + ResearchInterestCulturalArea retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ResearchInterestCulturalArea retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (ResearchInterestCulturalArea)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + + + /** + * selects a collection of ResearchInterestCulturalArea objects pre-filled with their + * ResearchInterest objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in ResearchInterestCulturalAreaPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinResearchInterest(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + ResearchInterestCulturalAreaPeer.addSelectColumns(c); + int offset = numColumns + 1; + ResearchInterestPeer.addSelectColumns(c); + + + c.addJoin(ResearchInterestCulturalAreaPeer.RESEARCH_INTEREST_ID, + ResearchInterestPeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = ResearchInterestCulturalAreaPeer.getOMClass(); + + ResearchInterestCulturalArea obj1 = (ResearchInterestCulturalArea) ResearchInterestCulturalAreaPeer + .row2Object(row, 1, omClass); + + + omClass = ResearchInterestPeer.getOMClass(); + ResearchInterest obj2 = (ResearchInterest)ResearchInterestPeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + ResearchInterestCulturalArea temp_obj1 = (ResearchInterestCulturalArea)results.get(j); + ResearchInterest temp_obj2 = (ResearchInterest)temp_obj1.getResearchInterest(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addResearchInterestCulturalArea(obj1); + break; + } + } + if (newObject) + { + obj2.initResearchInterestCulturalAreas(); + obj2.addResearchInterestCulturalArea(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + + /** + * selects a collection of ResearchInterestCulturalArea objects pre-filled with their + * CulturalArea objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in ResearchInterestCulturalAreaPeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinCulturalArea(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + ResearchInterestCulturalAreaPeer.addSelectColumns(c); + int offset = numColumns + 1; + CulturalAreaPeer.addSelectColumns(c); + + + c.addJoin(ResearchInterestCulturalAreaPeer.CULTURAL_AREA_ID, + CulturalAreaPeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = ResearchInterestCulturalAreaPeer.getOMClass(); + + ResearchInterestCulturalArea obj1 = (ResearchInterestCulturalArea) ResearchInterestCulturalAreaPeer + .row2Object(row, 1, omClass); + + + omClass = CulturalAreaPeer.getOMClass(); + CulturalArea obj2 = (CulturalArea)CulturalAreaPeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + ResearchInterestCulturalArea temp_obj1 = (ResearchInterestCulturalArea)results.get(j); + CulturalArea temp_obj2 = (CulturalArea)temp_obj1.getCulturalArea(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addResearchInterestCulturalArea(obj1); + break; + } + } + if (newObject) + { + obj2.initResearchInterestCulturalAreas(); + obj2.addResearchInterestCulturalArea(obj1); + } + results.add(obj1); + } + return results; + } + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseResearchInterestDiscipline.java b/src/java/org/thdl/roster/om/BaseResearchInterestDiscipline.java new file mode 100755 index 0000000..2a105f1 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseResearchInterestDiscipline.java @@ -0,0 +1,584 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to ResearchInterestDiscipline + */ +public abstract class BaseResearchInterestDiscipline extends BaseObject +{ + /** The Peer class */ + private static final ResearchInterestDisciplinePeer peer = + new ResearchInterestDisciplinePeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the discipline_id field + */ + private Integer discipline_id; + + /** + * The value for the research_interest_id field + */ + private Integer research_interest_id; + + /** + * The value for the relevance field + */ + private Integer relevance; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + } + + + /** + * Get the DisciplineId + * + * @return Integer + */ + public Integer getDisciplineId() + { + return discipline_id; + } + + + /** + * Set the value of DisciplineId + * + * @param v new value + */ + public void setDisciplineId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.discipline_id, v)) + { + this.discipline_id = v; + setModified(true); + } + + + if (aDiscipline != null && !ObjectUtils.equals(aDiscipline.getId(), v)) + { + aDiscipline = null; + } + + } + + + /** + * Get the ResearchInterestId + * + * @return Integer + */ + public Integer getResearchInterestId() + { + return research_interest_id; + } + + + /** + * Set the value of ResearchInterestId + * + * @param v new value + */ + public void setResearchInterestId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.research_interest_id, v)) + { + this.research_interest_id = v; + setModified(true); + } + + + if (aResearchInterest != null && !ObjectUtils.equals(aResearchInterest.getId(), v)) + { + aResearchInterest = null; + } + + } + + + /** + * Get the Relevance + * + * @return Integer + */ + public Integer getRelevance() + { + return relevance; + } + + + /** + * Set the value of Relevance + * + * @param v new value + */ + public void setRelevance(Integer v) + { + + + + if (!ObjectUtils.equals(this.relevance, v)) + { + this.relevance = v; + setModified(true); + } + + + } + + + + + + + + private ResearchInterest aResearchInterest; + + /** + * Declares an association between this object and a ResearchInterest object + * + * @param v ResearchInterest + * @throws TorqueException + */ + public void setResearchInterest(ResearchInterest v) throws TorqueException + { + if (v == null) + { + setResearchInterestId((Integer)null); + } + else + { + setResearchInterestId(v.getId()); + } + aResearchInterest = v; + } + + + /** + * Get the associated ResearchInterest object + * + * @return the associated ResearchInterest object + * @throws TorqueException + */ + public ResearchInterest getResearchInterest() throws TorqueException + { + if (aResearchInterest == null && (!ObjectUtils.equals(this.research_interest_id, null))) + { + aResearchInterest = ResearchInterestPeer.retrieveByPK(SimpleKey.keyFor(this.research_interest_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + ResearchInterest obj = ResearchInterestPeer.retrieveByPK(this.research_interest_id); + obj.addResearchInterestDisciplines(this); + */ + } + return aResearchInterest; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setResearchInterestKey(ObjectKey key) throws TorqueException + { + + setResearchInterestId(new Integer(((NumberKey) key).intValue())); + } + + + + + private Discipline aDiscipline; + + /** + * Declares an association between this object and a Discipline object + * + * @param v Discipline + * @throws TorqueException + */ + public void setDiscipline(Discipline v) throws TorqueException + { + if (v == null) + { + setDisciplineId((Integer)null); + } + else + { + setDisciplineId(v.getId()); + } + aDiscipline = v; + } + + + /** + * Get the associated Discipline object + * + * @return the associated Discipline object + * @throws TorqueException + */ + public Discipline getDiscipline() throws TorqueException + { + if (aDiscipline == null && (!ObjectUtils.equals(this.discipline_id, null))) + { + aDiscipline = DisciplinePeer.retrieveByPK(SimpleKey.keyFor(this.discipline_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + Discipline obj = DisciplinePeer.retrieveByPK(this.discipline_id); + obj.addResearchInterestDisciplines(this); + */ + } + return aDiscipline; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setDisciplineKey(ObjectKey key) throws TorqueException + { + + setDisciplineId(new Integer(((NumberKey) key).intValue())); + } + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("DisciplineId"); + fieldNames.add("ResearchInterestId"); + fieldNames.add("Relevance"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("DisciplineId")) + { + return getDisciplineId(); + } + if (name.equals("ResearchInterestId")) + { + return getResearchInterestId(); + } + if (name.equals("Relevance")) + { + return getRelevance(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(ResearchInterestDisciplinePeer.ID)) + { + return getId(); + } + if (name.equals(ResearchInterestDisciplinePeer.DISCIPLINE_ID)) + { + return getDisciplineId(); + } + if (name.equals(ResearchInterestDisciplinePeer.RESEARCH_INTEREST_ID)) + { + return getResearchInterestId(); + } + if (name.equals(ResearchInterestDisciplinePeer.RELEVANCE)) + { + return getRelevance(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getDisciplineId(); + } + if (pos == 2) + { + return getResearchInterestId(); + } + if (pos == 3) + { + return getRelevance(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(ResearchInterestDisciplinePeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + ResearchInterestDisciplinePeer.doInsert((ResearchInterestDiscipline) this, con); + setNew(false); + } + else + { + ResearchInterestDisciplinePeer.doUpdate((ResearchInterestDiscipline) this, con); + } + } + + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public ResearchInterestDiscipline copy() throws TorqueException + { + return copyInto(new ResearchInterestDiscipline()); + } + + protected ResearchInterestDiscipline copyInto(ResearchInterestDiscipline copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setDisciplineId(discipline_id); + copyObj.setResearchInterestId(research_interest_id); + copyObj.setRelevance(relevance); + + copyObj.setNew(false); + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public ResearchInterestDisciplinePeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseResearchInterestDisciplinePeer.java b/src/java/org/thdl/roster/om/BaseResearchInterestDisciplinePeer.java new file mode 100755 index 0000000..96ef3cd --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseResearchInterestDisciplinePeer.java @@ -0,0 +1,946 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseResearchInterestDisciplinePeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "ResearchInterestDiscipline"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(ResearchInterestDisciplineMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the DISCIPLINE_ID field */ + public static final String DISCIPLINE_ID; + /** the column name for the RESEARCH_INTEREST_ID field */ + public static final String RESEARCH_INTEREST_ID; + /** the column name for the RELEVANCE field */ + public static final String RELEVANCE; + + static + { + ID = "ResearchInterestDiscipline.ID"; + DISCIPLINE_ID = "ResearchInterestDiscipline.DISCIPLINE_ID"; + RESEARCH_INTEREST_ID = "ResearchInterestDiscipline.RESEARCH_INTEREST_ID"; + RELEVANCE = "ResearchInterestDiscipline.RELEVANCE"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(ResearchInterestDisciplineMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 4; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.ResearchInterestDiscipline"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseResearchInterestDisciplinePeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(DISCIPLINE_ID); + criteria.addSelectColumn(RESEARCH_INTEREST_ID); + criteria.addSelectColumn(RELEVANCE); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ResearchInterestDiscipline row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + ResearchInterestDiscipline obj = (ResearchInterestDiscipline) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + ResearchInterestDiscipline obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setDisciplineId(row.getValue(offset + 1).asIntegerObj()); + obj.setResearchInterestId(row.getValue(offset + 2).asIntegerObj()); + obj.setRelevance(row.getValue(offset + 3).asIntegerObj()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseResearchInterestDisciplinePeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(ResearchInterestDisciplinePeer.row2Object(row, 1, + ResearchInterestDisciplinePeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseResearchInterestDisciplinePeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseResearchInterestDisciplinePeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(ResearchInterestDiscipline obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(ResearchInterestDiscipline obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(ResearchInterestDiscipline obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ResearchInterestDiscipline obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(ResearchInterestDiscipline) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(ResearchInterestDiscipline obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(ResearchInterestDiscipline) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(ResearchInterestDiscipline obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ResearchInterestDiscipline) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ResearchInterestDiscipline obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseResearchInterestDisciplinePeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( ResearchInterestDiscipline obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(DISCIPLINE_ID, obj.getDisciplineId()); + criteria.add(RESEARCH_INTEREST_ID, obj.getResearchInterestId()); + criteria.add(RELEVANCE, obj.getRelevance()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ResearchInterestDiscipline retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ResearchInterestDiscipline retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + ResearchInterestDiscipline retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ResearchInterestDiscipline retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (ResearchInterestDiscipline)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + + + /** + * selects a collection of ResearchInterestDiscipline objects pre-filled with their + * ResearchInterest objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in ResearchInterestDisciplinePeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinResearchInterest(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + ResearchInterestDisciplinePeer.addSelectColumns(c); + int offset = numColumns + 1; + ResearchInterestPeer.addSelectColumns(c); + + + c.addJoin(ResearchInterestDisciplinePeer.RESEARCH_INTEREST_ID, + ResearchInterestPeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = ResearchInterestDisciplinePeer.getOMClass(); + + ResearchInterestDiscipline obj1 = (ResearchInterestDiscipline) ResearchInterestDisciplinePeer + .row2Object(row, 1, omClass); + + + omClass = ResearchInterestPeer.getOMClass(); + ResearchInterest obj2 = (ResearchInterest)ResearchInterestPeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + ResearchInterestDiscipline temp_obj1 = (ResearchInterestDiscipline)results.get(j); + ResearchInterest temp_obj2 = (ResearchInterest)temp_obj1.getResearchInterest(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addResearchInterestDiscipline(obj1); + break; + } + } + if (newObject) + { + obj2.initResearchInterestDisciplines(); + obj2.addResearchInterestDiscipline(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + + /** + * selects a collection of ResearchInterestDiscipline objects pre-filled with their + * Discipline objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in ResearchInterestDisciplinePeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinDiscipline(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + ResearchInterestDisciplinePeer.addSelectColumns(c); + int offset = numColumns + 1; + DisciplinePeer.addSelectColumns(c); + + + c.addJoin(ResearchInterestDisciplinePeer.DISCIPLINE_ID, + DisciplinePeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = ResearchInterestDisciplinePeer.getOMClass(); + + ResearchInterestDiscipline obj1 = (ResearchInterestDiscipline) ResearchInterestDisciplinePeer + .row2Object(row, 1, omClass); + + + omClass = DisciplinePeer.getOMClass(); + Discipline obj2 = (Discipline)DisciplinePeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + ResearchInterestDiscipline temp_obj1 = (ResearchInterestDiscipline)results.get(j); + Discipline temp_obj2 = (Discipline)temp_obj1.getDiscipline(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addResearchInterestDiscipline(obj1); + break; + } + } + if (newObject) + { + obj2.initResearchInterestDisciplines(); + obj2.addResearchInterestDiscipline(obj1); + } + results.add(obj1); + } + return results; + } + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseResearchInterestLanguage.java b/src/java/org/thdl/roster/om/BaseResearchInterestLanguage.java new file mode 100755 index 0000000..84f9651 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseResearchInterestLanguage.java @@ -0,0 +1,584 @@ +package org.thdl.roster.om; + + +import java.math.BigDecimal; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Date; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.torque.TorqueException; +import org.apache.torque.om.BaseObject; +import org.apache.torque.om.ComboKey; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.Persistent; +import org.apache.torque.util.Criteria; +import org.apache.torque.util.Transaction; + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + * You should not use this class directly. It should not even be + * extended all references should be to ResearchInterestLanguage + */ +public abstract class BaseResearchInterestLanguage extends BaseObject +{ + /** The Peer class */ + private static final ResearchInterestLanguagePeer peer = + new ResearchInterestLanguagePeer(); + + + /** + * The value for the id field + */ + private Integer id; + + /** + * The value for the language_id field + */ + private Integer language_id; + + /** + * The value for the research_interest_id field + */ + private Integer research_interest_id; + + /** + * The value for the relevance field + */ + private Integer relevance; + + + /** + * Get the Id + * + * @return Integer + */ + public Integer getId() + { + return id; + } + + + /** + * Set the value of Id + * + * @param v new value + */ + public void setId(Integer v) + { + + + + if (!ObjectUtils.equals(this.id, v)) + { + this.id = v; + setModified(true); + } + + + } + + + /** + * Get the LanguageId + * + * @return Integer + */ + public Integer getLanguageId() + { + return language_id; + } + + + /** + * Set the value of LanguageId + * + * @param v new value + */ + public void setLanguageId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.language_id, v)) + { + this.language_id = v; + setModified(true); + } + + + if (aLanguage != null && !ObjectUtils.equals(aLanguage.getId(), v)) + { + aLanguage = null; + } + + } + + + /** + * Get the ResearchInterestId + * + * @return Integer + */ + public Integer getResearchInterestId() + { + return research_interest_id; + } + + + /** + * Set the value of ResearchInterestId + * + * @param v new value + */ + public void setResearchInterestId(Integer v) throws TorqueException + { + + + + if (!ObjectUtils.equals(this.research_interest_id, v)) + { + this.research_interest_id = v; + setModified(true); + } + + + if (aResearchInterest != null && !ObjectUtils.equals(aResearchInterest.getId(), v)) + { + aResearchInterest = null; + } + + } + + + /** + * Get the Relevance + * + * @return Integer + */ + public Integer getRelevance() + { + return relevance; + } + + + /** + * Set the value of Relevance + * + * @param v new value + */ + public void setRelevance(Integer v) + { + + + + if (!ObjectUtils.equals(this.relevance, v)) + { + this.relevance = v; + setModified(true); + } + + + } + + + + + + + + private ResearchInterest aResearchInterest; + + /** + * Declares an association between this object and a ResearchInterest object + * + * @param v ResearchInterest + * @throws TorqueException + */ + public void setResearchInterest(ResearchInterest v) throws TorqueException + { + if (v == null) + { + setResearchInterestId((Integer)null); + } + else + { + setResearchInterestId(v.getId()); + } + aResearchInterest = v; + } + + + /** + * Get the associated ResearchInterest object + * + * @return the associated ResearchInterest object + * @throws TorqueException + */ + public ResearchInterest getResearchInterest() throws TorqueException + { + if (aResearchInterest == null && (!ObjectUtils.equals(this.research_interest_id, null))) + { + aResearchInterest = ResearchInterestPeer.retrieveByPK(SimpleKey.keyFor(this.research_interest_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + ResearchInterest obj = ResearchInterestPeer.retrieveByPK(this.research_interest_id); + obj.addResearchInterestLanguages(this); + */ + } + return aResearchInterest; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setResearchInterestKey(ObjectKey key) throws TorqueException + { + + setResearchInterestId(new Integer(((NumberKey) key).intValue())); + } + + + + + private Language aLanguage; + + /** + * Declares an association between this object and a Language object + * + * @param v Language + * @throws TorqueException + */ + public void setLanguage(Language v) throws TorqueException + { + if (v == null) + { + setLanguageId((Integer)null); + } + else + { + setLanguageId(v.getId()); + } + aLanguage = v; + } + + + /** + * Get the associated Language object + * + * @return the associated Language object + * @throws TorqueException + */ + public Language getLanguage() throws TorqueException + { + if (aLanguage == null && (!ObjectUtils.equals(this.language_id, null))) + { + aLanguage = LanguagePeer.retrieveByPK(SimpleKey.keyFor(this.language_id)); + + /* The following can be used instead of the line above to + guarantee the related object contains a reference + to this object, but this level of coupling + may be undesirable in many circumstances. + As it can lead to a db query with many results that may + never be used. + Language obj = LanguagePeer.retrieveByPK(this.language_id); + obj.addResearchInterestLanguages(this); + */ + } + return aLanguage; + } + + /** + * Provides convenient way to set a relationship based on a + * ObjectKey. e.g. + * bar.setFooKey(foo.getPrimaryKey()) + * + */ + public void setLanguageKey(ObjectKey key) throws TorqueException + { + + setLanguageId(new Integer(((NumberKey) key).intValue())); + } + + + + private static List fieldNames = null; + + /** + * Generate a list of field names. + * + * @return a list of field names + */ + public static synchronized List getFieldNames() + { + if (fieldNames == null) + { + fieldNames = new ArrayList(); + fieldNames.add("Id"); + fieldNames.add("LanguageId"); + fieldNames.add("ResearchInterestId"); + fieldNames.add("Relevance"); + fieldNames = Collections.unmodifiableList(fieldNames); + } + return fieldNames; + } + + /** + * Retrieves a field from the object by name passed in as a String. + * + * @param name field name + * @return value + */ + public Object getByName(String name) + { + if (name.equals("Id")) + { + return getId(); + } + if (name.equals("LanguageId")) + { + return getLanguageId(); + } + if (name.equals("ResearchInterestId")) + { + return getResearchInterestId(); + } + if (name.equals("Relevance")) + { + return getRelevance(); + } + return null; + } + /** + * Retrieves a field from the object by name passed in + * as a String. The String must be one of the static + * Strings defined in this Class' Peer. + * + * @param name peer name + * @return value + */ + public Object getByPeerName(String name) + { + if (name.equals(ResearchInterestLanguagePeer.ID)) + { + return getId(); + } + if (name.equals(ResearchInterestLanguagePeer.LANGUAGE_ID)) + { + return getLanguageId(); + } + if (name.equals(ResearchInterestLanguagePeer.RESEARCH_INTEREST_ID)) + { + return getResearchInterestId(); + } + if (name.equals(ResearchInterestLanguagePeer.RELEVANCE)) + { + return getRelevance(); + } + return null; + } + + /** + * Retrieves a field from the object by Position as specified + * in the xml schema. Zero-based. + * + * @param pos position in xml schema + * @return value + */ + public Object getByPosition(int pos) + { + if (pos == 0) + { + return getId(); + } + if (pos == 1) + { + return getLanguageId(); + } + if (pos == 2) + { + return getResearchInterestId(); + } + if (pos == 3) + { + return getRelevance(); + } + return null; + } + + + + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * + * @throws Exception + */ + public void save() throws Exception + { + save(ResearchInterestLanguagePeer.getMapBuilder() + .getDatabaseMap().getName()); + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. + * Note: this code is here because the method body is + * auto-generated conditionally and therefore needs to be + * in this file instead of in the super class, BaseObject. + * + * @param dbName + * @throws TorqueException + */ + public void save(String dbName) throws TorqueException + { + Connection con = null; + try + { + con = Transaction.begin(dbName); + save(con); + Transaction.commit(con); + } + catch(TorqueException e) + { + Transaction.safeRollback(con); + throw e; + } + + } + + /** flag to prevent endless save loop, if this object is referenced + by another object which falls in this transaction. */ + private boolean alreadyInSave = false; + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * is meant to be used as part of a transaction, otherwise use + * the save() method and the connection details will be handled + * internally + * + * @param con + * @throws TorqueException + */ + public void save(Connection con) throws TorqueException + { + if (!alreadyInSave) + { + alreadyInSave = true; + + + + + // If this object has been modified, then save it to the database. + if (isModified()) + { + if (isNew()) + { + ResearchInterestLanguagePeer.doInsert((ResearchInterestLanguage) this, con); + setNew(false); + } + else + { + ResearchInterestLanguagePeer.doUpdate((ResearchInterestLanguage) this, con); + } + } + + alreadyInSave = false; + } + } + + + + + + + /** + * Set the PrimaryKey using ObjectKey. + * + * @param id ObjectKey + */ + public void setPrimaryKey(ObjectKey key) + + { + setId(new Integer(((NumberKey) key).intValue())); + } + + /** + * Set the PrimaryKey using a String. + * + * @param key + */ + public void setPrimaryKey(String key) + { + setId(new Integer(key)); + } + + + /** + * returns an id that differentiates this object from others + * of its class. + */ + public ObjectKey getPrimaryKey() + { + return SimpleKey.keyFor(getId()); + } + + + + /** + * Makes a copy of this object. + * It creates a new object filling in the simple attributes. + * It then fills all the association collections and sets the + * related objects to isNew=true. + */ + public ResearchInterestLanguage copy() throws TorqueException + { + return copyInto(new ResearchInterestLanguage()); + } + + protected ResearchInterestLanguage copyInto(ResearchInterestLanguage copyObj) throws TorqueException + { + copyObj.setId(id); + copyObj.setLanguageId(language_id); + copyObj.setResearchInterestId(research_interest_id); + copyObj.setRelevance(relevance); + + copyObj.setNew(false); + copyObj.setNew(true); + + copyObj.setId((Integer)null); + return copyObj; + } + + /** + * returns a peer instance associated with this om. Since Peer classes + * are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + */ + public ResearchInterestLanguagePeer getPeer() + { + return peer; + } +} diff --git a/src/java/org/thdl/roster/om/BaseResearchInterestLanguagePeer.java b/src/java/org/thdl/roster/om/BaseResearchInterestLanguagePeer.java new file mode 100755 index 0000000..9ecacba --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseResearchInterestLanguagePeer.java @@ -0,0 +1,946 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseResearchInterestLanguagePeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "ResearchInterestLanguage"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(ResearchInterestLanguageMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the LANGUAGE_ID field */ + public static final String LANGUAGE_ID; + /** the column name for the RESEARCH_INTEREST_ID field */ + public static final String RESEARCH_INTEREST_ID; + /** the column name for the RELEVANCE field */ + public static final String RELEVANCE; + + static + { + ID = "ResearchInterestLanguage.ID"; + LANGUAGE_ID = "ResearchInterestLanguage.LANGUAGE_ID"; + RESEARCH_INTEREST_ID = "ResearchInterestLanguage.RESEARCH_INTEREST_ID"; + RELEVANCE = "ResearchInterestLanguage.RELEVANCE"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(ResearchInterestLanguageMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 4; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.ResearchInterestLanguage"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseResearchInterestLanguagePeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(LANGUAGE_ID); + criteria.addSelectColumn(RESEARCH_INTEREST_ID); + criteria.addSelectColumn(RELEVANCE); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ResearchInterestLanguage row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + ResearchInterestLanguage obj = (ResearchInterestLanguage) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + ResearchInterestLanguage obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setLanguageId(row.getValue(offset + 1).asIntegerObj()); + obj.setResearchInterestId(row.getValue(offset + 2).asIntegerObj()); + obj.setRelevance(row.getValue(offset + 3).asIntegerObj()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseResearchInterestLanguagePeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(ResearchInterestLanguagePeer.row2Object(row, 1, + ResearchInterestLanguagePeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseResearchInterestLanguagePeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseResearchInterestLanguagePeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(ResearchInterestLanguage obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(ResearchInterestLanguage obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(ResearchInterestLanguage obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ResearchInterestLanguage obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(ResearchInterestLanguage) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(ResearchInterestLanguage obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(ResearchInterestLanguage) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(ResearchInterestLanguage obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ResearchInterestLanguage) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ResearchInterestLanguage obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseResearchInterestLanguagePeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( ResearchInterestLanguage obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(LANGUAGE_ID, obj.getLanguageId()); + criteria.add(RESEARCH_INTEREST_ID, obj.getResearchInterestId()); + criteria.add(RELEVANCE, obj.getRelevance()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ResearchInterestLanguage retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ResearchInterestLanguage retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + ResearchInterestLanguage retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ResearchInterestLanguage retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (ResearchInterestLanguage)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + + + /** + * selects a collection of ResearchInterestLanguage objects pre-filled with their + * ResearchInterest objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in ResearchInterestLanguagePeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinResearchInterest(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + ResearchInterestLanguagePeer.addSelectColumns(c); + int offset = numColumns + 1; + ResearchInterestPeer.addSelectColumns(c); + + + c.addJoin(ResearchInterestLanguagePeer.RESEARCH_INTEREST_ID, + ResearchInterestPeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = ResearchInterestLanguagePeer.getOMClass(); + + ResearchInterestLanguage obj1 = (ResearchInterestLanguage) ResearchInterestLanguagePeer + .row2Object(row, 1, omClass); + + + omClass = ResearchInterestPeer.getOMClass(); + ResearchInterest obj2 = (ResearchInterest)ResearchInterestPeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + ResearchInterestLanguage temp_obj1 = (ResearchInterestLanguage)results.get(j); + ResearchInterest temp_obj2 = (ResearchInterest)temp_obj1.getResearchInterest(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addResearchInterestLanguage(obj1); + break; + } + } + if (newObject) + { + obj2.initResearchInterestLanguages(); + obj2.addResearchInterestLanguage(obj1); + } + results.add(obj1); + } + return results; + } + + + + + + + /** + * selects a collection of ResearchInterestLanguage objects pre-filled with their + * Language objects. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in ResearchInterestLanguagePeer. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static List doSelectJoinLanguage(Criteria c) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // c.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (c.getDbName() == Torque.getDefaultDB()) + { + c.setDbName(DATABASE_NAME); + } + + ResearchInterestLanguagePeer.addSelectColumns(c); + int offset = numColumns + 1; + LanguagePeer.addSelectColumns(c); + + + c.addJoin(ResearchInterestLanguagePeer.LANGUAGE_ID, + LanguagePeer.ID); + + + + List rows = BasePeer.doSelect(c); + List results = new ArrayList(); + + for (int i = 0; i < rows.size(); i++) + { + Record row = (Record) rows.get(i); + + Class omClass = ResearchInterestLanguagePeer.getOMClass(); + + ResearchInterestLanguage obj1 = (ResearchInterestLanguage) ResearchInterestLanguagePeer + .row2Object(row, 1, omClass); + + + omClass = LanguagePeer.getOMClass(); + Language obj2 = (Language)LanguagePeer + .row2Object(row, offset, omClass); + + boolean newObject = true; + for (int j = 0; j < results.size(); j++) + { + ResearchInterestLanguage temp_obj1 = (ResearchInterestLanguage)results.get(j); + Language temp_obj2 = (Language)temp_obj1.getLanguage(); + if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey())) + { + newObject = false; + temp_obj2.addResearchInterestLanguage(obj1); + break; + } + } + if (newObject) + { + obj2.initResearchInterestLanguages(); + obj2.addResearchInterestLanguage(obj1); + } + results.add(obj1); + } + return results; + } + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/BaseResearchInterestPeer.java b/src/java/org/thdl/roster/om/BaseResearchInterestPeer.java new file mode 100755 index 0000000..9020158 --- /dev/null +++ b/src/java/org/thdl/roster/om/BaseResearchInterestPeer.java @@ -0,0 +1,802 @@ +package org.thdl.roster.om; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.TableMap; +import org.apache.torque.om.DateKey; +import org.apache.torque.om.NumberKey; +import org.apache.torque.om.StringKey; +import org.apache.torque.om.ObjectKey; +import org.apache.torque.om.SimpleKey; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; + +import com.workingdogs.village.DataSetException; +import com.workingdogs.village.QueryDataSet; +import com.workingdogs.village.Record; + +// Local classes +import org.thdl.roster.om.map.*; + + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public abstract class BaseResearchInterestPeer + extends BasePeer +{ + + /** the default database name for this class */ + public static final String DATABASE_NAME = "Roster"; + + /** the table name for this class */ + public static final String TABLE_NAME = "ResearchInterest"; + + /** + * @return the map builder for this peer + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static MapBuilder getMapBuilder() + throws TorqueException + { + return getMapBuilder(ResearchInterestMapBuilder.CLASS_NAME); + } + + /** the column name for the ID field */ + public static final String ID; + /** the column name for the INTERESTS field */ + public static final String INTERESTS; + /** the column name for the ACTIVITIES field */ + public static final String ACTIVITIES; + /** the column name for the COLLABORATION_INTERESTS field */ + public static final String COLLABORATION_INTERESTS; + /** the column name for the FOCUS_FROM field */ + public static final String FOCUS_FROM; + /** the column name for the FOCUS_TO field */ + public static final String FOCUS_TO; + + static + { + ID = "ResearchInterest.ID"; + INTERESTS = "ResearchInterest.INTERESTS"; + ACTIVITIES = "ResearchInterest.ACTIVITIES"; + COLLABORATION_INTERESTS = "ResearchInterest.COLLABORATION_INTERESTS"; + FOCUS_FROM = "ResearchInterest.FOCUS_FROM"; + FOCUS_TO = "ResearchInterest.FOCUS_TO"; + + if (Torque.isInit()) + { + try + { + getMapBuilder(); + } + catch (Exception e) + { + category.error("Could not initialize Peer", e); + } + } + else + { + Torque.registerMapBuilder(ResearchInterestMapBuilder.CLASS_NAME); + } + } + + + /** number of columns for this peer */ + public static final int numColumns = 6; + + /** A class that can be returned by this peer. */ + protected static final String CLASSNAME_DEFAULT = + "org.thdl.roster.om.ResearchInterest"; + + /** A class that can be returned by this peer. */ + protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT); + + /** + * Class object initialization method. + * + * @param className name of the class to initialize + * @return the initialized class + */ + private static Class initClass(String className) + { + Class c = null; + try + { + c = Class.forName(className); + } + catch (Throwable t) + { + category.error("A FATAL ERROR has occurred which should not " + + "have happened under any circumstance. Please notify " + + "the Turbine developers " + + "and give as many details as possible (including the error " + + "stack trace).", t); + + // Error objects should always be propogated. + if (t instanceof Error) + { + throw (Error) t.fillInStackTrace(); + } + } + return c; + } + + + /** + * Get the list of objects for a ResultSet. Please not that your + * resultset MUST return columns in the right order. You can use + * getFieldNames() in BaseObject to get the correct sequence. + * + * @param results the ResultSet + * @return the list of objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List resultSet2Objects(java.sql.ResultSet results) + throws TorqueException + { + try + { + QueryDataSet qds = null; + List rows = null; + try + { + qds = new QueryDataSet(results); + rows = getSelectResults(qds); + } + finally + { + if (qds != null) + { + qds.close(); + } + } + + return populateObjects(rows); + } + catch (SQLException e) + { + throw new TorqueException(e); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + + + /** + * Method to do inserts. + * + * @param criteria object used to create the INSERT statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria) + throws TorqueException + { + return BaseResearchInterestPeer + .doInsert(criteria, (Connection) null); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object used to create the INSERT statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ObjectKey doInsert(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + return BasePeer.doInsert(criteria); + } + else + { + return BasePeer.doInsert(criteria, con); + } + } + + /** + * Add all the columns needed to create a new object. + * + * @param criteria object containing the columns to add. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void addSelectColumns(Criteria criteria) + throws TorqueException + { + criteria.addSelectColumn(ID); + criteria.addSelectColumn(INTERESTS); + criteria.addSelectColumn(ACTIVITIES); + criteria.addSelectColumn(COLLABORATION_INTERESTS); + criteria.addSelectColumn(FOCUS_FROM); + criteria.addSelectColumn(FOCUS_TO); + } + + + /** + * Create a new object of type cls from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ResearchInterest row2Object(Record row, + int offset, + Class cls) + throws TorqueException + { + try + { + ResearchInterest obj = (ResearchInterest) cls.newInstance(); + populateObject(row, offset, obj); + obj.setModified(false); + obj.setNew(false); + + return obj; + } + catch (InstantiationException e) + { + throw new TorqueException(e); + } + catch (IllegalAccessException e) + { + throw new TorqueException(e); + } + } + + /** + * Populates an object from a resultset row starting + * from a specified offset. This is done so that you can select + * other rows than just those needed for this object. You may + * for example want to create two objects from the same row. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void populateObject(Record row, + int offset, + ResearchInterest obj) + throws TorqueException + { + try + { + obj.setId(row.getValue(offset + 0).asIntegerObj()); + obj.setInterests(row.getValue(offset + 1).asString()); + obj.setActivities(row.getValue(offset + 2).asString()); + obj.setCollaborationInterests(row.getValue(offset + 3).asString()); + obj.setFocusFrom(row.getValue(offset + 4).asIntegerObj()); + obj.setFocusTo(row.getValue(offset + 5).asIntegerObj()); + } + catch (DataSetException e) + { + throw new TorqueException(e); + } + } + + /** + * Method to do selects. + * + * @param criteria object used to create the SELECT statement. + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria) throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria)); + } + + /** + * Method to do selects within a transaction. + * + * @param criteria object used to create the SELECT statement. + * @param con the connection to use + * @return List of selected Objects + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(Criteria criteria, Connection con) + throws TorqueException + { + return populateObjects(doSelectVillageRecords(criteria, con)); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method handles connections internally. The Record objects + * returned by this method should be considered readonly. Do not + * alter the data and call save(), your results may vary, but are + * certainly likely to result in hard to track MT bugs. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria) + throws TorqueException + { + return BaseResearchInterestPeer + .doSelectVillageRecords(criteria, (Connection) null); + } + + /** + * Grabs the raw Village records to be formed into objects. + * This method should be used for transactions + * + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelectVillageRecords(Criteria criteria, Connection con) + throws TorqueException + { + + if (criteria.getSelectColumns().size() == 0) + { + addSelectColumns(criteria); + } + + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + // BasePeer returns a List of Value (Village) arrays. The array + // order follows the order columns were placed in the Select clause. + if (con == null) + { + return BasePeer.doSelect(criteria); + } + else + { + return BasePeer.doSelect(criteria, con); + } + } + + /** + * The returned List will contain objects of the default type or + * objects that inherit from the default. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List populateObjects(List records) + throws TorqueException + { + List results = new ArrayList(records.size()); + + // populate the object(s) + for (int i = 0; i < records.size(); i++) + { + Record row = (Record) records.get(i); + results.add(ResearchInterestPeer.row2Object(row, 1, + ResearchInterestPeer.getOMClass())); + } + return results; + } + + + /** + * The class that the Peer will make instances of. + * If the BO is abstract then you must implement this method + * in the BO. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static Class getOMClass() + throws TorqueException + { + return CLASS_DEFAULT; + } + + + /** + * Method to do updates. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria) throws TorqueException + { + BaseResearchInterestPeer + .doUpdate(criteria, (Connection) null); + } + + /** + * Method to do updates. This method is to be used during a transaction, + * otherwise use the doUpdate(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used to create the UPDATE + * statement. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(Criteria criteria, Connection con) + throws TorqueException + { + Criteria selectCriteria = new Criteria(DATABASE_NAME, 2); + selectCriteria.put(ID, criteria.remove(ID)); + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doUpdate(selectCriteria, criteria); + } + else + { + BasePeer.doUpdate(selectCriteria, criteria, con); + } + } + + /** + * Method to do deletes. + * + * @param criteria object containing data that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria) throws TorqueException + { + BaseResearchInterestPeer + .doDelete(criteria, (Connection) null); + } + + /** + * Method to do deletes. This method is to be used during a transaction, + * otherwise use the doDelete(Criteria) method. It will take care of + * the connection details internally. + * + * @param criteria object containing data that is used DELETE from database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(Criteria criteria, Connection con) + throws TorqueException + { + + // Set the correct dbName if it has not been overridden + // criteria.getDbName will return the same object if not set to + // another value so == check is okay and faster + if (criteria.getDbName() == Torque.getDefaultDB()) + { + criteria.setDbName(DATABASE_NAME); + } + if (con == null) + { + BasePeer.doDelete(criteria); + } + else + { + BasePeer.doDelete(criteria, con); + } + } + + /** + * Method to do selects + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List doSelect(ResearchInterest obj) throws TorqueException + { + return doSelect(buildCriteria(obj)); + } + + /** + * Method to do inserts + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(ResearchInterest obj) throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj))); + obj.setNew(false); + obj.setModified(false); + } + + /** + * @param obj the data object to update in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(ResearchInterest obj) throws TorqueException + { + doUpdate(buildCriteria(obj)); + obj.setModified(false); + } + + /** + * @param obj the data object to delete in the database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ResearchInterest obj) throws TorqueException + { + doDelete(buildCriteria(obj)); + } + + /** + * Method to do inserts. This method is to be used during a transaction, + * otherwise use the doInsert(ResearchInterest) method. It will take + * care of the connection details internally. + * + * @param obj the data object to insert into the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doInsert(ResearchInterest obj, Connection con) + throws TorqueException + { + obj.setPrimaryKey(doInsert(buildCriteria(obj), con)); + obj.setNew(false); + obj.setModified(false); + } + + /** + * Method to do update. This method is to be used during a transaction, + * otherwise use the doUpdate(ResearchInterest) method. It will take + * care of the connection details internally. + * + * @param obj the data object to update in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doUpdate(ResearchInterest obj, Connection con) + throws TorqueException + { + doUpdate(buildCriteria(obj), con); + obj.setModified(false); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ResearchInterest) method. It will take + * care of the connection details internally. + * + * @param obj the data object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ResearchInterest obj, Connection con) + throws TorqueException + { + doDelete(buildCriteria(obj), con); + } + + /** + * Method to do deletes. + * + * @param pk ObjectKey that is used DELETE from database. + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk) throws TorqueException + { + BaseResearchInterestPeer + .doDelete(pk, (Connection) null); + } + + /** + * Method to delete. This method is to be used during a transaction, + * otherwise use the doDelete(ObjectKey) method. It will take + * care of the connection details internally. + * + * @param pk the primary key for the object to delete in the database. + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static void doDelete(ObjectKey pk, Connection con) + throws TorqueException + { + doDelete(buildCriteria(pk), con); + } + + /** Build a Criteria object from an ObjectKey */ + public static Criteria buildCriteria( ObjectKey pk ) + { + Criteria criteria = new Criteria(); + criteria.add(ID, pk); + return criteria; + } + + /** Build a Criteria object from the data object for this peer */ + public static Criteria buildCriteria( ResearchInterest obj ) + { + Criteria criteria = new Criteria(DATABASE_NAME); + if (!obj.isNew()) + criteria.add(ID, obj.getId()); + criteria.add(INTERESTS, obj.getInterests()); + criteria.add(ACTIVITIES, obj.getActivities()); + criteria.add(COLLABORATION_INTERESTS, obj.getCollaborationInterests()); + criteria.add(FOCUS_FROM, obj.getFocusFrom()); + criteria.add(FOCUS_TO, obj.getFocusTo()); + return criteria; + } + + + + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ResearchInterest retrieveByPK(Integer pk) + throws TorqueException + { + return retrieveByPK(SimpleKey.keyFor(pk)); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ResearchInterest retrieveByPK(ObjectKey pk) + throws TorqueException + { + Connection db = null; + ResearchInterest retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPK(pk, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a single object by pk + * + * @param pk the primary key + * @param con the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static ResearchInterest retrieveByPK(ObjectKey pk, Connection con) + throws TorqueException + { + Criteria criteria = buildCriteria(pk); + List v = doSelect(criteria, con); + if (v.size() != 1) + { + throw new TorqueException("Failed to select one and only one row."); + } + else + { + return (ResearchInterest)v.get(0); + } + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs(List pks) + throws TorqueException + { + Connection db = null; + List retVal = null; + try + { + db = Torque.getConnection(DATABASE_NAME); + retVal = retrieveByPKs(pks, db); + } + finally + { + Torque.closeConnection(db); + } + return(retVal); + } + + /** + * Retrieve a multiple objects by pk + * + * @param pks List of primary keys + * @param dbcon the connection to use + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + public static List retrieveByPKs( List pks, Connection dbcon ) + throws TorqueException + { + List objs = null; + if (pks == null || pks.size() == 0) + { + objs = new LinkedList(); + } + else + { + Criteria criteria = new Criteria(); + criteria.addIn( ID, pks ); + objs = doSelect(criteria, dbcon); + } + return objs; + } + + + + + + + + + + + /** + * Returns the TableMap related to this peer. This method is not + * needed for general use but a specific application could have a need. + * + * @throws TorqueException Any exceptions caught during processing will be + * rethrown wrapped into a TorqueException. + */ + protected static TableMap getTableMap() + throws TorqueException + { + return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME); + } + } diff --git a/src/java/org/thdl/roster/om/ContactInfo.java b/src/java/org/thdl/roster/om/ContactInfo.java new file mode 100755 index 0000000..82a36bb --- /dev/null +++ b/src/java/org/thdl/roster/om/ContactInfo.java @@ -0,0 +1,36 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; +import org.apache.torque.TorqueException; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class ContactInfo + extends org.thdl.roster.om.BaseContactInfo + implements java.io.Serializable, Persistent +{ + public Address getAddress() throws TorqueException + { + if ( null == super.getAddress() ) + { + super.setAddress( new Address() ); + } + return super.getAddress(); + } + public ContactInfo() throws TorqueException + { + super(); + setAddress( new Address() ); + setPhoneRelatedByPhone( new Phone() ); + setPhoneRelatedByFax( new Phone() ); + } +} diff --git a/src/java/org/thdl/roster/om/ContactInfoPeer.java b/src/java/org/thdl/roster/om/ContactInfoPeer.java new file mode 100755 index 0000000..0ab9384 --- /dev/null +++ b/src/java/org/thdl/roster/om/ContactInfoPeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class ContactInfoPeer + extends org.thdl.roster.om.BaseContactInfoPeer +{ +} diff --git a/src/java/org/thdl/roster/om/Country.java b/src/java/org/thdl/roster/om/Country.java new file mode 100755 index 0000000..d5b97a0 --- /dev/null +++ b/src/java/org/thdl/roster/om/Country.java @@ -0,0 +1,27 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; +import org.apache.torque.TorqueException; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class Country + extends org.thdl.roster.om.BaseCountry + implements java.io.Serializable, Persistent +{ + public Country() throws TorqueException + { + super(); + setId( new Integer( 0 ) ); + setCountry( "" ); + } +} diff --git a/src/java/org/thdl/roster/om/CountryPeer.java b/src/java/org/thdl/roster/om/CountryPeer.java new file mode 100755 index 0000000..bf39f2b --- /dev/null +++ b/src/java/org/thdl/roster/om/CountryPeer.java @@ -0,0 +1,22 @@ +package org.thdl.roster.om; + +import org.apache.torque.util.*; +import java.util.*; +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class CountryPeer + extends org.thdl.roster.om.BaseCountryPeer +{ + static public List doSelectAll() throws Exception + { + Criteria crit = new Criteria(); + return doSelect(crit); + } +} diff --git a/src/java/org/thdl/roster/om/CulturalArea.java b/src/java/org/thdl/roster/om/CulturalArea.java new file mode 100755 index 0000000..f3ae327 --- /dev/null +++ b/src/java/org/thdl/roster/om/CulturalArea.java @@ -0,0 +1,20 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class CulturalArea + extends org.thdl.roster.om.BaseCulturalArea + implements java.io.Serializable, Persistent +{ +} diff --git a/src/java/org/thdl/roster/om/CulturalAreaPeer.java b/src/java/org/thdl/roster/om/CulturalAreaPeer.java new file mode 100755 index 0000000..fccc248 --- /dev/null +++ b/src/java/org/thdl/roster/om/CulturalAreaPeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class CulturalAreaPeer + extends org.thdl.roster.om.BaseCulturalAreaPeer +{ +} diff --git a/src/java/org/thdl/roster/om/Discipline.java b/src/java/org/thdl/roster/om/Discipline.java new file mode 100755 index 0000000..f7403a0 --- /dev/null +++ b/src/java/org/thdl/roster/om/Discipline.java @@ -0,0 +1,20 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class Discipline + extends org.thdl.roster.om.BaseDiscipline + implements java.io.Serializable, Persistent +{ +} diff --git a/src/java/org/thdl/roster/om/DisciplinePeer.java b/src/java/org/thdl/roster/om/DisciplinePeer.java new file mode 100755 index 0000000..0ec36b7 --- /dev/null +++ b/src/java/org/thdl/roster/om/DisciplinePeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class DisciplinePeer + extends org.thdl.roster.om.BaseDisciplinePeer +{ +} diff --git a/src/java/org/thdl/roster/om/Document.java b/src/java/org/thdl/roster/om/Document.java new file mode 100755 index 0000000..132b2e6 --- /dev/null +++ b/src/java/org/thdl/roster/om/Document.java @@ -0,0 +1,20 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class Document + extends org.thdl.roster.om.BaseDocument + implements java.io.Serializable, Persistent +{ +} diff --git a/src/java/org/thdl/roster/om/DocumentPeer.java b/src/java/org/thdl/roster/om/DocumentPeer.java new file mode 100755 index 0000000..7ccf819 --- /dev/null +++ b/src/java/org/thdl/roster/om/DocumentPeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class DocumentPeer + extends org.thdl.roster.om.BaseDocumentPeer +{ +} diff --git a/src/java/org/thdl/roster/om/DocumentType.java b/src/java/org/thdl/roster/om/DocumentType.java new file mode 100755 index 0000000..67ea33d --- /dev/null +++ b/src/java/org/thdl/roster/om/DocumentType.java @@ -0,0 +1,20 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class DocumentType + extends org.thdl.roster.om.BaseDocumentType + implements Persistent +{ +} diff --git a/src/java/org/thdl/roster/om/DocumentTypePeer.java b/src/java/org/thdl/roster/om/DocumentTypePeer.java new file mode 100755 index 0000000..c9c2fab --- /dev/null +++ b/src/java/org/thdl/roster/om/DocumentTypePeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class DocumentTypePeer + extends org.thdl.roster.om.BaseDocumentTypePeer +{ +} diff --git a/src/java/org/thdl/roster/om/Language.java b/src/java/org/thdl/roster/om/Language.java new file mode 100755 index 0000000..6ef3546 --- /dev/null +++ b/src/java/org/thdl/roster/om/Language.java @@ -0,0 +1,20 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class Language + extends org.thdl.roster.om.BaseLanguage + implements java.io.Serializable, Persistent +{ +} diff --git a/src/java/org/thdl/roster/om/LanguagePeer.java b/src/java/org/thdl/roster/om/LanguagePeer.java new file mode 100755 index 0000000..c70c9ba --- /dev/null +++ b/src/java/org/thdl/roster/om/LanguagePeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class LanguagePeer + extends org.thdl.roster.om.BaseLanguagePeer +{ +} diff --git a/src/java/org/thdl/roster/om/Member.java b/src/java/org/thdl/roster/om/Member.java new file mode 100755 index 0000000..520c99f --- /dev/null +++ b/src/java/org/thdl/roster/om/Member.java @@ -0,0 +1,72 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class Member extends org.thdl.roster.om.BaseMember implements RosterMember, java.io.Serializable +{ + + public void setMemberData( RosterMemberData memberData ) throws RosterMemberTypeException + { + throw new RosterMemberTypeException( "Can't set memberData of generic instance of RosterMember, class " + this.getClass().getName() ); + } + + public RosterMemberData getMemberData() throws RosterMemberTypeException + { + throw new RosterMemberTypeException( "Can't get memberData of generic instance of RosterMember, class " + this.getClass().getName() ); + } + + public void save() throws Exception + { + java.util.Date now = new java.util.Date( System.currentTimeMillis() ); + setModifiedOn( now ); + super.save(); + } +//synthetic accessors + public boolean getPersonMember() { + boolean b = false; + if ( this instanceof Person ) + { + b=true; + } + return b; + } + public boolean getProjectMember() { + boolean b = false; + if ( this instanceof Project ) + { + b=true; + } + return b; + } + public boolean getOrganizationMember() { + boolean b = false; + if ( this instanceof Organization ) + { + b=true; + } + return b; + } + public void save( Integer thdlUserId ) + { + if ( isNew() ) + { + setCreatedBy( thdlUserId ); + setModifiedBy( thdlUserId ); + java.util.Date now = new java.util.Date( System.currentTimeMillis() ); + setCreatedOn( now ); + setModifiedOn( now ); + setDeleted( "false" ); + } + } +} diff --git a/src/java/org/thdl/roster/om/MemberPeer.java b/src/java/org/thdl/roster/om/MemberPeer.java new file mode 100755 index 0000000..8c542fe --- /dev/null +++ b/src/java/org/thdl/roster/om/MemberPeer.java @@ -0,0 +1,147 @@ +package org.thdl.roster.om; + +import org.thdl.roster.RosterQuery; +import org.apache.torque.*; +import org.apache.torque.util.*; +import java.util.*; +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class MemberPeer extends org.thdl.roster.om.BaseMemberPeer +{ + public static String esc( String rawText ) throws TorqueException + { + return SqlExpression.quoteAndEscapeText( rawText, Torque.getDB( Torque.getDefaultDB() ) ); + } + +// Custom Query helpers + +/* public static List executeQuery( RosterQuery query) throws TorqueException + { + StringBuffer sql = new StringBuffer() ; + sql.append( " SELECT DISTINCT Member.* FROM Member, PersonData, ProjectData, OrganizationData, ContactInfo, Address, ResearchInterest, ResearchInterestDiscipline, ResearchInterestCulturalArea, ResearchInterestLanguage " ); + sql.append( "\nWHERE Member.deleted = 'false' "); + appendMemberTypes( sql, query ); + appendNames( sql, query ); + appendCountries( sql, query ); + appendDiscipline( sql, query ); + appendLanguage( sql, query ); + appendCulturalArea( sql, query ); + query.setPeerGeneratedSql( sql.toString() ); + //List villageRecords = MemberPeer.executeQuery( sql.toString() ); + //List villageRecords = MemberPeer.executeQuery( "SELECT * FROM Member" ); + return null;//MemberPeer.populateObjects( villageRecords ); + } + + public static void appendCulturalArea( StringBuffer sql, RosterQuery query ) + { + if ( null != query.getSelectedCulturalArea() ) + { + sql.append( " \nAND Member.research_interest_id = ResearchInterest.id " ); + sql.append( " \nAND ResearchInterest.id = ResearchInterestCulturalArea.research_interest_id " ); + sql.append( " \nAND ResearchInterestCulturalArea.cultural_area_id = " ); + sql.append( query.getSelectedCulturalArea() ); + } + } + + public static void appendLanguage( StringBuffer sql, RosterQuery query ) + { + if ( null != query.getSelectedLanguage() ) + { + sql.append( " \nAND Member.research_interest_id = ResearchInterest.id " ); + sql.append( " \nAND ResearchInterest.id = ResearchInterestLanguage.research_interest_id " ); + sql.append( " \nAND ResearchInterestLanguage.language_id = " ); + sql.append( query.getSelectedLanguage() ); + } + } + + public static void appendDiscipline( StringBuffer sql, RosterQuery query ) + { + if ( null != query.getSelectedDiscipline() ) + { + sql.append( " \nAND Member.research_interest_id = ResearchInterest.id " ); + sql.append( " \nAND ResearchInterest.id = ResearchInterestDiscipline.research_interest_id " ); + sql.append( " \nAND ResearchInterestDiscipline.discipline_id = " ); + sql.append( query.getSelectedDiscipline() ); + } + } + + public static void appendCountries( StringBuffer sql, RosterQuery query ) throws TorqueException + { + Iterator countries = query.getCountries().keySet().iterator(); + while ( countries.hasNext() ) + { + Country key = (Country)countries.next(); + Boolean value = (Boolean) query.getCountries().get( key ); + if ( value.equals( Boolean.FALSE ) ) + { + sql.append( " \nAND Member.contact_info_id = ContactInfo.id " ); + sql.append( " \nAND ContactInfo.address_id = Address.id " ); + sql.append( " \nAND " ); + sql.append( AddressPeer.COUNTRY_ID ); + sql.append( " <> " ); + sql.append( key.getId() ); + } + } + } + + public static void appendNames( StringBuffer sql, RosterQuery query ) throws TorqueException + { + if ( null != query.getName() && ! query.getName().equals( "" ) ) + { + String name = "%" + query.getName() + "%"; + name = esc( name ); + sql.append( "\nAND " ); + sql.append( "\n( " ); + sql.append( "\n ( " ); + sql.append( "\n Member.person_data_id = PersonData.id " ); + sql.append( "\n AND " ); + sql.append( "\n ( " ); + sql.append( "\n PersonData.firstname LIKE " ); + sql.append( name ); + sql.append( "\n OR" ); + sql.append( "\n PersonData.lastname LIKE " ); + sql.append( name ); + sql.append( "\n ) " ); + sql.append( "\n )" ); + sql.append( "\n OR" ); + sql.append( "\n (" ); + sql.append( "\n Member.project_data_id = ProjectData.id" ); + sql.append( "\n AND" ); + sql.append( "\n ProjectData.name LIKE " ); + sql.append( name ); + sql.append( "\n )" ); + sql.append( "\n OR" ); + sql.append( "\n (" ); + sql.append( "\n Member.organization_data_id = OrganizationData.id" ); + sql.append( "\n AND" ); + sql.append( "\n OrganizationData.name LIKE " ); + sql.append( name ); + sql.append( "\n )" ); + sql.append( "\n)" ); + } + } + + public static void appendMemberTypes( StringBuffer sql, RosterQuery query ) throws TorqueException + { + Iterator memTypes = query.getMemberTypes().keySet().iterator(); + while ( memTypes.hasNext() ) + { + String key = (String)memTypes.next(); + Boolean value = (Boolean) query.getMemberTypes().get( key ); + if ( value.equals( Boolean.FALSE ) ) + { + sql.append( " \nAND " ); + sql.append( MemberPeer.MEMBER_TYPE ); + sql.append( " NOT LIKE " ); + sql.append( esc( key ) ); + } + } + } */ +} diff --git a/src/java/org/thdl/roster/om/Organization.java b/src/java/org/thdl/roster/om/Organization.java new file mode 100755 index 0000000..e2edb20 --- /dev/null +++ b/src/java/org/thdl/roster/om/Organization.java @@ -0,0 +1,71 @@ +package org.thdl.roster.om; + +import java.util.*; +import org.apache.torque.om.BaseObject; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; +import org.apache.torque.TorqueException; + + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 12:26:47 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class Organization extends org.thdl.roster.om.Member implements RosterMember +{ +//attributes + RosterMemberData memberData; +//accessors + public void setMemberData (RosterMemberData memberData) throws RosterMemberTypeException + { + if ( memberData instanceof OrganizationData ) + { + try { + OrganizationData pd = (OrganizationData) memberData; + setOrganizationData( pd ); + } + catch ( TorqueException te ) + { + throw new RosterMemberTypeException( te.getMessage() ); + } + } + else + { + throw new RosterMemberTypeException( "MemberData must be a OrganizationData for this object" ); + } + } + public RosterMemberData getMemberData() throws RosterMemberTypeException + { + try { + return getOrganizationData(); + } + catch ( TorqueException te ) + { + throw new RosterMemberTypeException( te.getMessage() ); + } + } +//helpers + public Member copy() throws TorqueException + { + Organization organization = new Organization(); + organization = (Organization) copyInto( organization ); + organization.setOrganizationData( getOrganizationData().copy() ); + return organization; + } + +//constructors + public Organization() throws TorqueException + { + setMemberType(MemberPeer.CLASSKEY_ORGANIZATION); + setOrganizationData( new OrganizationData() ); + setContactInfo( new ContactInfo() ); + setResearchInterest( new ResearchInterest() ); + setPublication( new Publication() ); + //setDocument( new Document() ); + } +} diff --git a/src/java/org/thdl/roster/om/OrganizationData.java b/src/java/org/thdl/roster/om/OrganizationData.java new file mode 100755 index 0000000..b87fd1e --- /dev/null +++ b/src/java/org/thdl/roster/om/OrganizationData.java @@ -0,0 +1,63 @@ +package org.thdl.roster.om; + +import org.apache.torque.om.Persistent; +import org.apache.torque.*; +import org.apache.torque.util.*; +import java.util.*; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class OrganizationData + extends org.thdl.roster.om.BaseOrganizationData + implements java.io.Serializable, RosterMemberData +{ + //attributes + private List organizationTypeIdList; + //accessors + public void setId(Integer v) throws TorqueException + { + super.setId( v ); + setOrganizationTypeIdList( buildIdList() ); + } + public void setOrganizationTypeIdList( List organizationTypeIdList ) + { + this.organizationTypeIdList = organizationTypeIdList; + } + public List getOrganizationTypeIdList() throws TorqueException + { + return organizationTypeIdList; + } + //helpers + public List buildIdList() throws TorqueException + { + Criteria crit = new Criteria(); + crit.add( OrganizationOrganizationTypePeer.ORGANIZATION_DATA_ID, getId() ); + crit.addAscendingOrderByColumn( OrganizationOrganizationTypePeer.RELEVANCE ); + List idSourceList = OrganizationOrganizationTypePeer.doSelect( crit ); + LinkedList newList = new LinkedList(); + ListIterator iterator = idSourceList.listIterator( 0 ); + while ( iterator.hasNext() ) + { + OrganizationOrganizationType ppt = (OrganizationOrganizationType) iterator.next(); + Integer id = ppt.getOrganizationType().getId(); + newList.add( id ); + } + return newList; + } + + public java.util.List getMemberTypes() throws org.apache.torque.TorqueException + { + return getOrganizationOrganizationTypes(); + } + public void setMemberTypes( java.util.List memberTypes ) + { + // WRONG setOrganizationOrganizationTypes( memberTypes ); + } +} diff --git a/src/java/org/thdl/roster/om/OrganizationDataPeer.java b/src/java/org/thdl/roster/om/OrganizationDataPeer.java new file mode 100755 index 0000000..258ee10 --- /dev/null +++ b/src/java/org/thdl/roster/om/OrganizationDataPeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class OrganizationDataPeer + extends org.thdl.roster.om.BaseOrganizationDataPeer +{ +} diff --git a/src/java/org/thdl/roster/om/OrganizationOrganizationType.java b/src/java/org/thdl/roster/om/OrganizationOrganizationType.java new file mode 100755 index 0000000..eede56b --- /dev/null +++ b/src/java/org/thdl/roster/om/OrganizationOrganizationType.java @@ -0,0 +1,44 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; +import org.apache.torque.TorqueException; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class OrganizationOrganizationType + extends org.thdl.roster.om.BaseOrganizationOrganizationType + implements java.io.Serializable, Persistent, RosterMergeData +{ + public void setByPosition( int position, Integer data ) throws TorqueException + { + if ( position == 1 ) + { + setId( data ); + } + if ( position == 2 ) + { + setOrganizationTypeId( data ); + } + if ( position == 3 ) + { + setOrganizationDataId( data ); + } + if ( position == 4 ) + { + setRelevance( data ); + } + } + public void remove() throws TorqueException + { + getPeer().doDelete( this ); + } +} diff --git a/src/java/org/thdl/roster/om/OrganizationOrganizationTypePeer.java b/src/java/org/thdl/roster/om/OrganizationOrganizationTypePeer.java new file mode 100755 index 0000000..da64e38 --- /dev/null +++ b/src/java/org/thdl/roster/om/OrganizationOrganizationTypePeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class OrganizationOrganizationTypePeer + extends org.thdl.roster.om.BaseOrganizationOrganizationTypePeer +{ +} diff --git a/src/java/org/thdl/roster/om/OrganizationType.java b/src/java/org/thdl/roster/om/OrganizationType.java new file mode 100755 index 0000000..75b3b9a --- /dev/null +++ b/src/java/org/thdl/roster/om/OrganizationType.java @@ -0,0 +1,20 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class OrganizationType + extends org.thdl.roster.om.BaseOrganizationType + implements java.io.Serializable, Persistent +{ +} diff --git a/src/java/org/thdl/roster/om/OrganizationTypePeer.java b/src/java/org/thdl/roster/om/OrganizationTypePeer.java new file mode 100755 index 0000000..7f0a8c2 --- /dev/null +++ b/src/java/org/thdl/roster/om/OrganizationTypePeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class OrganizationTypePeer + extends org.thdl.roster.om.BaseOrganizationTypePeer +{ +} diff --git a/src/java/org/thdl/roster/om/Person.java b/src/java/org/thdl/roster/om/Person.java new file mode 100755 index 0000000..71afca6 --- /dev/null +++ b/src/java/org/thdl/roster/om/Person.java @@ -0,0 +1,80 @@ +package org.thdl.roster.om; + +import java.util.*; +import org.apache.torque.om.BaseObject; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; +import org.apache.torque.TorqueException; +import org.thdl.users.*; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 12:26:47 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class Person extends org.thdl.roster.om.Member implements RosterMember, java.io.Serializable +{ +//attributes +//accessors + public void setMemberData (RosterMemberData memberData) throws RosterMemberTypeException + { + if ( memberData instanceof PersonData ) + { + try { + PersonData pd = (PersonData) memberData; + setPersonData( pd ); + } + catch ( TorqueException te ) + { + throw new RosterMemberTypeException( te.getMessage() ); + } + } + else + { + throw new RosterMemberTypeException( "MemberData must be a PersonData for this object" ); + } + } + public RosterMemberData getMemberData() throws RosterMemberTypeException + { + try { + return getPersonData(); + } + catch ( TorqueException te ) + { + throw new RosterMemberTypeException( te.getMessage() ); + } + } +//helpers + public Member copy() throws TorqueException + { + Person person = new Person(); + person = (Person) copyInto( person ); + person.setPersonData( getPersonData().copy() ); + return person; + } + +//constructors + public Person() throws TorqueException + { + super(); + setMemberType(MemberPeer.CLASSKEY_PERSON); + setPersonData( new PersonData() ); + setContactInfo( new ContactInfo() ); + setResearchInterest( new ResearchInterest() ); + setPublication( new Publication() ); + //setDocument( new Document() ); + } + public Person( ThdlUser user ) throws TorqueException + { + this(); + getPersonData().setThdlUserId( new Integer( user.getId() ) ); + getPersonData().setFirstname( user.getFirstname() ); + getPersonData().setMiddlename( user.getMiddlename() ); + getPersonData().setLastname( user.getLastname() ); + //getPersonData().setEmail( user.getEmail() ); + } +} diff --git a/src/java/org/thdl/roster/om/PersonData.java b/src/java/org/thdl/roster/om/PersonData.java new file mode 100755 index 0000000..bf57211 --- /dev/null +++ b/src/java/org/thdl/roster/om/PersonData.java @@ -0,0 +1,89 @@ +package org.thdl.roster.om; + +import org.apache.torque.om.Persistent; +import org.apache.torque.*; +import org.apache.torque.util.*; +import java.util.*; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ + +public class PersonData + extends org.thdl.roster.om.BasePersonData + implements RosterMemberData, java.io.Serializable +{ + //attributes + private List personTypeIdList; + //accessors + public void setId(Integer v) throws TorqueException + { + super.setId( v ); + setPersonTypeIdList( buildIdList() ); + } + public void setPersonTypeIdList( List personTypeIdList ) + { + this.personTypeIdList = personTypeIdList; + } + public List getPersonTypeIdList() throws TorqueException + { + return personTypeIdList; + } + //helpers + public String getName() + { + String name = null; + if ( null != getLastname() ) + { + name = getLastname(); + } + if ( null != getFirstname() ) + { + if ( null != name ) + { + name = getFirstname() + " " + name; + } + else + { + name = getFirstname(); + } + } + return name; + } + + public String getDescription() + { + return getBio(); + } + + public List buildIdList() throws TorqueException + { + Criteria crit = new Criteria(); + crit.add( PersonPersonTypePeer.PERSON_DATA_ID, getId() ); + crit.addAscendingOrderByColumn( PersonPersonTypePeer.RELEVANCE ); + List idSourceList = PersonPersonTypePeer.doSelect( crit ); + LinkedList newList = new LinkedList(); + ListIterator iterator = idSourceList.listIterator( 0 ); + while ( iterator.hasNext() ) + { + PersonPersonType ppt = (PersonPersonType) iterator.next(); + Integer id = ppt.getPersonType().getId(); + newList.add( id ); + } + return newList; + } + public java.util.List getMemberTypes() throws org.apache.torque.TorqueException + { + return getPersonPersonTypes(); + } + public void setMemberTypes( java.util.List memberTypes ) + { + // WRONG setPersonPersonTypes( memberTypes ); + } +} diff --git a/src/java/org/thdl/roster/om/PersonDataPeer.java b/src/java/org/thdl/roster/om/PersonDataPeer.java new file mode 100755 index 0000000..ee98695 --- /dev/null +++ b/src/java/org/thdl/roster/om/PersonDataPeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class PersonDataPeer + extends org.thdl.roster.om.BasePersonDataPeer +{ +} diff --git a/src/java/org/thdl/roster/om/PersonPersonType.java b/src/java/org/thdl/roster/om/PersonPersonType.java new file mode 100755 index 0000000..b62fab0 --- /dev/null +++ b/src/java/org/thdl/roster/om/PersonPersonType.java @@ -0,0 +1,44 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; +import org.apache.torque.*; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class PersonPersonType + extends org.thdl.roster.om.BasePersonPersonType + implements java.io.Serializable, Persistent, RosterMergeData +{ + public void setByPosition( int position, Integer data ) throws TorqueException + { + if ( position == 1 ) + { + setId( data ); + } + if ( position == 2 ) + { + setPersonTypeId( data ); + } + if ( position == 3 ) + { + setPersonDataId( data ); + } + if ( position == 4 ) + { + setRelevance( data ); + } + } + public void remove() throws TorqueException + { + getPeer().doDelete( this ); + } +} diff --git a/src/java/org/thdl/roster/om/PersonPersonTypePeer.java b/src/java/org/thdl/roster/om/PersonPersonTypePeer.java new file mode 100755 index 0000000..94a8756 --- /dev/null +++ b/src/java/org/thdl/roster/om/PersonPersonTypePeer.java @@ -0,0 +1,19 @@ +package org.thdl.roster.om; + +import org.apache.torque.*; +import java.util.*; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class PersonPersonTypePeer + extends org.thdl.roster.om.BasePersonPersonTypePeer +{ + +} diff --git a/src/java/org/thdl/roster/om/PersonType.java b/src/java/org/thdl/roster/om/PersonType.java new file mode 100755 index 0000000..162c844 --- /dev/null +++ b/src/java/org/thdl/roster/om/PersonType.java @@ -0,0 +1,20 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class PersonType + extends org.thdl.roster.om.BasePersonType + implements java.io.Serializable, Persistent +{ +} diff --git a/src/java/org/thdl/roster/om/PersonTypePeer.java b/src/java/org/thdl/roster/om/PersonTypePeer.java new file mode 100755 index 0000000..7abda81 --- /dev/null +++ b/src/java/org/thdl/roster/om/PersonTypePeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class PersonTypePeer + extends org.thdl.roster.om.BasePersonTypePeer +{ +} diff --git a/src/java/org/thdl/roster/om/Phone.java b/src/java/org/thdl/roster/om/Phone.java new file mode 100755 index 0000000..000a7d9 --- /dev/null +++ b/src/java/org/thdl/roster/om/Phone.java @@ -0,0 +1,24 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class Phone + extends org.thdl.roster.om.BasePhone + implements java.io.Serializable, Persistent +{ + public Phone() + { + super(); + } +} diff --git a/src/java/org/thdl/roster/om/PhonePeer.java b/src/java/org/thdl/roster/om/PhonePeer.java new file mode 100755 index 0000000..3973b72 --- /dev/null +++ b/src/java/org/thdl/roster/om/PhonePeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class PhonePeer + extends org.thdl.roster.om.BasePhonePeer +{ +} diff --git a/src/java/org/thdl/roster/om/Project.java b/src/java/org/thdl/roster/om/Project.java new file mode 100755 index 0000000..b7fa2c5 --- /dev/null +++ b/src/java/org/thdl/roster/om/Project.java @@ -0,0 +1,70 @@ +package org.thdl.roster.om; + +import java.util.*; +import org.apache.torque.om.BaseObject; +import org.apache.torque.util.BasePeer; +import org.apache.torque.util.Criteria; +import org.apache.torque.TorqueException; + + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 12:26:47 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class Project extends org.thdl.roster.om.Member implements RosterMember +{ +//attributes +//accessors + public void setMemberData (RosterMemberData memberData) throws RosterMemberTypeException + { + if ( memberData instanceof ProjectData ) + { + try { + ProjectData pd = (ProjectData) memberData; + setProjectData( pd ); + } + catch ( TorqueException te ) + { + throw new RosterMemberTypeException( te.getMessage() ); + } + } + else + { + throw new RosterMemberTypeException( "MemberData must be a ProjectData for this object" ); + } + } + public RosterMemberData getMemberData() throws RosterMemberTypeException + { + try + { + return getProjectData(); + } + catch ( TorqueException te ) + { + throw new RosterMemberTypeException( te.getMessage() ); + } + } +//helpers + public Member copy() throws TorqueException + { + Project project = new Project(); + project = (Project) copyInto( project ); + project.setProjectData( getProjectData().copy() ); + return project; + } +//constructors + public Project() throws TorqueException + { + setMemberType(MemberPeer.CLASSKEY_PROJECT); + setProjectData( new ProjectData() ); + setContactInfo( new ContactInfo() ); + setResearchInterest( new ResearchInterest() ); + setPublication( new Publication() ); + //setDocument( new Document() ); + } +} diff --git a/src/java/org/thdl/roster/om/ProjectData.java b/src/java/org/thdl/roster/om/ProjectData.java new file mode 100755 index 0000000..1bb5f87 --- /dev/null +++ b/src/java/org/thdl/roster/om/ProjectData.java @@ -0,0 +1,64 @@ +package org.thdl.roster.om; + +import org.apache.torque.om.Persistent; +import org.apache.torque.*; +import org.apache.torque.util.*; +import java.util.*; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class ProjectData + extends org.thdl.roster.om.BaseProjectData + implements java.io.Serializable, RosterMemberData +{ + //attributes + private List projectTypeIdList; + //accessors + public void setId(Integer v) throws TorqueException + { + super.setId( v ); + setProjectTypeIdList( buildIdList() ); + } + public void setProjectTypeIdList( List projectTypeIdList ) + { + this.projectTypeIdList = projectTypeIdList; + } + public List getProjectTypeIdList() throws TorqueException + { + return projectTypeIdList; + } + //helpers + public List buildIdList() throws TorqueException + { + Criteria crit = new Criteria(); + crit.add( ProjectProjectTypePeer.PROJECT_DATA_ID, getId() ); + crit.addAscendingOrderByColumn( ProjectProjectTypePeer.RELEVANCE ); + List idSourceList = ProjectProjectTypePeer.doSelect( crit ); + LinkedList newList = new LinkedList(); + ListIterator iterator = idSourceList.listIterator( 0 ); + while ( iterator.hasNext() ) + { + ProjectProjectType ppt = (ProjectProjectType) iterator.next(); + Integer id = ppt.getProjectType().getId(); + newList.add( id ); + } + return newList; + } + + + public java.util.List getMemberTypes() throws org.apache.torque.TorqueException + { + return getProjectProjectTypes(); + } + public void setMemberTypes( java.util.List memberTypes ) + { + // WRONG setPersonPersonTypes( memberTypes ); + } +} diff --git a/src/java/org/thdl/roster/om/ProjectDataPeer.java b/src/java/org/thdl/roster/om/ProjectDataPeer.java new file mode 100755 index 0000000..2023c2e --- /dev/null +++ b/src/java/org/thdl/roster/om/ProjectDataPeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class ProjectDataPeer + extends org.thdl.roster.om.BaseProjectDataPeer +{ +} diff --git a/src/java/org/thdl/roster/om/ProjectProjectType.java b/src/java/org/thdl/roster/om/ProjectProjectType.java new file mode 100755 index 0000000..244c886 --- /dev/null +++ b/src/java/org/thdl/roster/om/ProjectProjectType.java @@ -0,0 +1,44 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; +import org.apache.torque.TorqueException; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class ProjectProjectType + extends org.thdl.roster.om.BaseProjectProjectType + implements java.io.Serializable, Persistent, RosterMergeData +{ + public void setByPosition( int position, Integer data ) throws TorqueException + { + if ( position == 1 ) + { + setId( data ); + } + if ( position == 2 ) + { + setProjectTypeId( data ); + } + if ( position == 3 ) + { + setProjectDataId( data ); + } + if ( position == 4 ) + { + setRelevance( data ); + } + } + public void remove() throws TorqueException + { + getPeer().doDelete( this ); + } +} diff --git a/src/java/org/thdl/roster/om/ProjectProjectTypePeer.java b/src/java/org/thdl/roster/om/ProjectProjectTypePeer.java new file mode 100755 index 0000000..966bbc4 --- /dev/null +++ b/src/java/org/thdl/roster/om/ProjectProjectTypePeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class ProjectProjectTypePeer + extends org.thdl.roster.om.BaseProjectProjectTypePeer +{ +} diff --git a/src/java/org/thdl/roster/om/ProjectType.java b/src/java/org/thdl/roster/om/ProjectType.java new file mode 100755 index 0000000..482fbf7 --- /dev/null +++ b/src/java/org/thdl/roster/om/ProjectType.java @@ -0,0 +1,20 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class ProjectType + extends org.thdl.roster.om.BaseProjectType + implements java.io.Serializable, Persistent +{ +} diff --git a/src/java/org/thdl/roster/om/ProjectTypePeer.java b/src/java/org/thdl/roster/om/ProjectTypePeer.java new file mode 100755 index 0000000..d36dbd5 --- /dev/null +++ b/src/java/org/thdl/roster/om/ProjectTypePeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class ProjectTypePeer + extends org.thdl.roster.om.BaseProjectTypePeer +{ +} diff --git a/src/java/org/thdl/roster/om/Publication.java b/src/java/org/thdl/roster/om/Publication.java new file mode 100755 index 0000000..865fa51 --- /dev/null +++ b/src/java/org/thdl/roster/om/Publication.java @@ -0,0 +1,20 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class Publication + extends org.thdl.roster.om.BasePublication + implements java.io.Serializable, Persistent +{ +} diff --git a/src/java/org/thdl/roster/om/PublicationPeer.java b/src/java/org/thdl/roster/om/PublicationPeer.java new file mode 100755 index 0000000..1836328 --- /dev/null +++ b/src/java/org/thdl/roster/om/PublicationPeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class PublicationPeer + extends org.thdl.roster.om.BasePublicationPeer +{ +} diff --git a/src/java/org/thdl/roster/om/ResearchInterest.java b/src/java/org/thdl/roster/om/ResearchInterest.java new file mode 100755 index 0000000..af412f1 --- /dev/null +++ b/src/java/org/thdl/roster/om/ResearchInterest.java @@ -0,0 +1,105 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; +import org.apache.torque.*; +import org.apache.torque.util.*; +import java.util.*; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class ResearchInterest extends org.thdl.roster.om.BaseResearchInterest implements java.io.Serializable, Persistent +{ +//attributes + private List disciplineIdList; + private List languageIdList; + private List culturalAreaIdList; +//accessors + public void setId(Integer v) throws TorqueException + { + super.setId( v ); + setDisciplineIdList( buildDisciplineIdList() ); + setLanguageIdList( buildLanguageIdList() ); + setCulturalAreaIdList( buildCulturalAreaIdList() ); + } + public void setDisciplineIdList(List disciplineIdList) throws TorqueException { + //if (disciplineIdList == null) throw new TorqueException( "attempt to set discipline IdList to null" ); + this.disciplineIdList = disciplineIdList; + } + public void setLanguageIdList(List languageIdList) { + this.languageIdList = languageIdList; + } + public void setCulturalAreaIdList(List culturalAreaIdList) { + this.culturalAreaIdList = culturalAreaIdList; + } + public List getDisciplineIdList() throws TorqueException { + return disciplineIdList; + } + public List getLanguageIdList() throws TorqueException { + return languageIdList; + } + public List getCulturalAreaIdList() throws TorqueException { + return culturalAreaIdList; + } +// helpers + public List buildDisciplineIdList() throws TorqueException + { + Criteria crit = new Criteria(); + crit.add( ResearchInterestDisciplinePeer.RESEARCH_INTEREST_ID, getId() ); + crit.addAscendingOrderByColumn( ResearchInterestDisciplinePeer.RELEVANCE ); + List idSourceList = ResearchInterestDisciplinePeer.doSelect( crit ); + LinkedList newList = new LinkedList(); + ListIterator iterator = idSourceList.listIterator( 0 ); + while ( iterator.hasNext() ) + { + ResearchInterestDiscipline rid = (ResearchInterestDiscipline) iterator.next(); + Integer id = rid.getDiscipline().getId(); + newList.add( id ); + } + return newList; + } + public List buildLanguageIdList() throws TorqueException + { + Criteria crit = new Criteria(); + crit.add( ResearchInterestLanguagePeer.RESEARCH_INTEREST_ID, getId() ); + crit.addAscendingOrderByColumn( ResearchInterestLanguagePeer.RELEVANCE ); + List idSourceList = ResearchInterestLanguagePeer.doSelect( crit ); + LinkedList newList = new LinkedList(); + ListIterator iterator = idSourceList.listIterator( 0 ); + while ( iterator.hasNext() ) + { + ResearchInterestLanguage rid = (ResearchInterestLanguage) iterator.next(); + Integer id = rid.getLanguage().getId(); + newList.add( id ); + } + return newList; + } + public List buildCulturalAreaIdList() throws TorqueException + { + Criteria crit = new Criteria(); + crit.add( ResearchInterestCulturalAreaPeer.RESEARCH_INTEREST_ID, getId() ); + crit.addAscendingOrderByColumn( ResearchInterestCulturalAreaPeer.RELEVANCE ); + List idSourceList = ResearchInterestCulturalAreaPeer.doSelect( crit ); + LinkedList newList = new LinkedList(); + ListIterator iterator = idSourceList.listIterator( 0 ); + while ( iterator.hasNext() ) + { + ResearchInterestCulturalArea rid = (ResearchInterestCulturalArea) iterator.next(); + Integer id = rid.getCulturalArea().getId(); + newList.add( id ); + } + return newList; + } + public ResearchInterest() + { + } + +} diff --git a/src/java/org/thdl/roster/om/ResearchInterestCulturalArea.java b/src/java/org/thdl/roster/om/ResearchInterestCulturalArea.java new file mode 100755 index 0000000..9e6e42a --- /dev/null +++ b/src/java/org/thdl/roster/om/ResearchInterestCulturalArea.java @@ -0,0 +1,44 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; +import org.apache.torque.TorqueException; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class ResearchInterestCulturalArea + extends org.thdl.roster.om.BaseResearchInterestCulturalArea + implements java.io.Serializable, Persistent, RosterMergeData +{ + public void setByPosition( int position, Integer data ) throws TorqueException + { + if ( position == 1 ) + { + setId( data ); + } + if ( position == 2 ) + { + setCulturalAreaId( data ); + } + if ( position == 3 ) + { + setResearchInterestId( data ); + } + if ( position == 4 ) + { + setRelevance( data ); + } + } + public void remove() throws TorqueException + { + getPeer().doDelete( this ); + } +} diff --git a/src/java/org/thdl/roster/om/ResearchInterestCulturalAreaPeer.java b/src/java/org/thdl/roster/om/ResearchInterestCulturalAreaPeer.java new file mode 100755 index 0000000..01e487d --- /dev/null +++ b/src/java/org/thdl/roster/om/ResearchInterestCulturalAreaPeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class ResearchInterestCulturalAreaPeer + extends org.thdl.roster.om.BaseResearchInterestCulturalAreaPeer +{ +} diff --git a/src/java/org/thdl/roster/om/ResearchInterestDiscipline.java b/src/java/org/thdl/roster/om/ResearchInterestDiscipline.java new file mode 100755 index 0000000..bb17280 --- /dev/null +++ b/src/java/org/thdl/roster/om/ResearchInterestDiscipline.java @@ -0,0 +1,44 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; +import org.apache.torque.TorqueException; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class ResearchInterestDiscipline + extends org.thdl.roster.om.BaseResearchInterestDiscipline + implements java.io.Serializable, Persistent, RosterMergeData +{ + public void setByPosition( int position, Integer data ) throws TorqueException + { + if ( position == 1 ) + { + setId( data ); + } + if ( position == 2 ) + { + setDisciplineId( data ); + } + if ( position == 3 ) + { + setResearchInterestId( data ); + } + if ( position == 4 ) + { + setRelevance( data ); + } + } + public void remove() throws TorqueException + { + getPeer().doDelete( this ); + } +} diff --git a/src/java/org/thdl/roster/om/ResearchInterestDisciplinePeer.java b/src/java/org/thdl/roster/om/ResearchInterestDisciplinePeer.java new file mode 100755 index 0000000..e143c38 --- /dev/null +++ b/src/java/org/thdl/roster/om/ResearchInterestDisciplinePeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class ResearchInterestDisciplinePeer + extends org.thdl.roster.om.BaseResearchInterestDisciplinePeer +{ +} diff --git a/src/java/org/thdl/roster/om/ResearchInterestLanguage.java b/src/java/org/thdl/roster/om/ResearchInterestLanguage.java new file mode 100755 index 0000000..a071b24 --- /dev/null +++ b/src/java/org/thdl/roster/om/ResearchInterestLanguage.java @@ -0,0 +1,45 @@ + +package org.thdl.roster.om; + + +import org.apache.torque.om.Persistent; +import org.apache.torque.TorqueException; +import org.apache.torque.TorqueException; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Mon Mar 17 09:22:14 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class ResearchInterestLanguage + extends org.thdl.roster.om.BaseResearchInterestLanguage + implements java.io.Serializable, Persistent, RosterMergeData +{ + public void setByPosition( int position, Integer data ) throws TorqueException + { + if ( position == 1 ) + { + setId( data ); + } + if ( position == 2 ) + { + setLanguageId( data ); + } + if ( position == 3 ) + { + setResearchInterestId( data ); + } + if ( position == 4 ) + { + setRelevance( data ); + } + } + public void remove() throws TorqueException + { + getPeer().doDelete( this ); + } +} diff --git a/src/java/org/thdl/roster/om/ResearchInterestLanguagePeer.java b/src/java/org/thdl/roster/om/ResearchInterestLanguagePeer.java new file mode 100755 index 0000000..e615352 --- /dev/null +++ b/src/java/org/thdl/roster/om/ResearchInterestLanguagePeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Mon Mar 17 09:22:14 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class ResearchInterestLanguagePeer + extends org.thdl.roster.om.BaseResearchInterestLanguagePeer +{ +} diff --git a/src/java/org/thdl/roster/om/ResearchInterestPeer.java b/src/java/org/thdl/roster/om/ResearchInterestPeer.java new file mode 100755 index 0000000..9bd8fa2 --- /dev/null +++ b/src/java/org/thdl/roster/om/ResearchInterestPeer.java @@ -0,0 +1,15 @@ +package org.thdl.roster.om; + +/** + * The skeleton for this class was autogenerated by Torque on: + * + * [Thu Feb 27 15:11:05 EST 2003] + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + */ +public class ResearchInterestPeer + extends org.thdl.roster.om.BaseResearchInterestPeer +{ +} diff --git a/src/java/org/thdl/roster/om/RosterMember.java b/src/java/org/thdl/roster/om/RosterMember.java new file mode 100755 index 0000000..e0c420a --- /dev/null +++ b/src/java/org/thdl/roster/om/RosterMember.java @@ -0,0 +1,7 @@ +package org.thdl.roster.om; + +public interface RosterMember extends org.apache.torque.om.Persistent +{ +public void setMemberData( RosterMemberData memberData ) throws RosterMemberTypeException; +public RosterMemberData getMemberData() throws RosterMemberTypeException; +} diff --git a/src/java/org/thdl/roster/om/RosterMemberData.java b/src/java/org/thdl/roster/om/RosterMemberData.java new file mode 100755 index 0000000..6c0c9d8 --- /dev/null +++ b/src/java/org/thdl/roster/om/RosterMemberData.java @@ -0,0 +1,11 @@ +package org.thdl.roster.om; + +public interface RosterMemberData extends org.apache.torque.om.Persistent +{ + public Integer getId() throws org.apache.torque.TorqueException; + public java.util.List getMemberTypes() throws org.apache.torque.TorqueException; + public String getDescription(); + public void setMemberTypes( java.util.List memberTypes ); + public void save() throws java.lang.Exception; + public String getName() throws java.lang.Exception; +} diff --git a/src/java/org/thdl/roster/om/RosterMemberType.java b/src/java/org/thdl/roster/om/RosterMemberType.java new file mode 100755 index 0000000..dca0472 --- /dev/null +++ b/src/java/org/thdl/roster/om/RosterMemberType.java @@ -0,0 +1,5 @@ +package org.thdl.roster.om; + +public interface RosterMemberType +{ +} diff --git a/src/java/org/thdl/roster/om/RosterMemberTypeException.java b/src/java/org/thdl/roster/om/RosterMemberTypeException.java new file mode 100755 index 0000000..0afc127 --- /dev/null +++ b/src/java/org/thdl/roster/om/RosterMemberTypeException.java @@ -0,0 +1,13 @@ +package org.thdl.roster.om; + +public class RosterMemberTypeException extends Exception +{ + public RosterMemberTypeException() + { + super(); + } + public RosterMemberTypeException( java.lang.String msg ) + { + super( msg ); + } +} diff --git a/src/java/org/thdl/roster/om/RosterMergeData.java b/src/java/org/thdl/roster/om/RosterMergeData.java new file mode 100755 index 0000000..0dc4f0d --- /dev/null +++ b/src/java/org/thdl/roster/om/RosterMergeData.java @@ -0,0 +1,10 @@ +package org.thdl.roster.om; + +public interface RosterMergeData +{ + public Object getByPosition( int pos ); + public org.apache.torque.om.ObjectKey getPrimaryKey(); + public void setByPosition( int position, Integer data ) throws java.lang.Exception; + public void save() throws java.lang.Exception; + public void remove() throws java.lang.Exception; +} diff --git a/src/java/org/thdl/roster/om/RosterOmException.java b/src/java/org/thdl/roster/om/RosterOmException.java new file mode 100755 index 0000000..28d2dba --- /dev/null +++ b/src/java/org/thdl/roster/om/RosterOmException.java @@ -0,0 +1,13 @@ +package org.thdl.roster.om; + +public class RosterOmException extends Exception +{ + public RosterOmException() + { + super(); + } + public RosterOmException( java.lang.String msg ) + { + super( msg ); + } +} diff --git a/src/java/org/thdl/roster/om/map/AddressMapBuilder.java b/src/java/org/thdl/roster/om/map/AddressMapBuilder.java new file mode 100755 index 0000000..f767c80 --- /dev/null +++ b/src/java/org/thdl/roster/om/map/AddressMapBuilder.java @@ -0,0 +1,82 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class AddressMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.AddressMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("Address"); + TableMap tMap = dbMap.getTable("Address"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("Address.ID", new Integer(0)); + tMap.addColumn("Address.ADDRESS", new String()); + tMap.addColumn("Address.CITY", new String()); + tMap.addColumn("Address.REGION", new String()); + tMap.addColumn("Address.ZIP", new String()); + tMap.addForeignKey( + "Address.COUNTRY_ID", new Integer(0) , "Country" , + "id"); + } +} diff --git a/src/java/org/thdl/roster/om/map/ContactInfoMapBuilder.java b/src/java/org/thdl/roster/om/map/ContactInfoMapBuilder.java new file mode 100755 index 0000000..96e3b71 --- /dev/null +++ b/src/java/org/thdl/roster/om/map/ContactInfoMapBuilder.java @@ -0,0 +1,87 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class ContactInfoMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.ContactInfoMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("ContactInfo"); + TableMap tMap = dbMap.getTable("ContactInfo"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("ContactInfo.ID", new Integer(0)); + tMap.addColumn("ContactInfo.CONTACT_NAME", new String()); + tMap.addColumn("ContactInfo.EMAIL", new String()); + tMap.addColumn("ContactInfo.WEBSITE", new String()); + tMap.addForeignKey( + "ContactInfo.PHONE", new Integer(0) , "Phone" , + "id"); + tMap.addForeignKey( + "ContactInfo.FAX", new Integer(0) , "Phone" , + "id"); + tMap.addForeignKey( + "ContactInfo.ADDRESS_ID", new Integer(0) , "Address" , + "id"); + } +} diff --git a/src/java/org/thdl/roster/om/map/CountryMapBuilder.java b/src/java/org/thdl/roster/om/map/CountryMapBuilder.java new file mode 100755 index 0000000..143b843 --- /dev/null +++ b/src/java/org/thdl/roster/om/map/CountryMapBuilder.java @@ -0,0 +1,76 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class CountryMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.CountryMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("Country"); + TableMap tMap = dbMap.getTable("Country"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("Country.ID", new Integer(0)); + tMap.addColumn("Country.COUNTRY", new String()); + } +} diff --git a/src/java/org/thdl/roster/om/map/CulturalAreaMapBuilder.java b/src/java/org/thdl/roster/om/map/CulturalAreaMapBuilder.java new file mode 100755 index 0000000..d28b07d --- /dev/null +++ b/src/java/org/thdl/roster/om/map/CulturalAreaMapBuilder.java @@ -0,0 +1,76 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class CulturalAreaMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.CulturalAreaMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("CulturalArea"); + TableMap tMap = dbMap.getTable("CulturalArea"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("CulturalArea.ID", new Integer(0)); + tMap.addColumn("CulturalArea.CULTURAL_AREA", new String()); + } +} diff --git a/src/java/org/thdl/roster/om/map/DisciplineMapBuilder.java b/src/java/org/thdl/roster/om/map/DisciplineMapBuilder.java new file mode 100755 index 0000000..1c8746f --- /dev/null +++ b/src/java/org/thdl/roster/om/map/DisciplineMapBuilder.java @@ -0,0 +1,76 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class DisciplineMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.DisciplineMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("Discipline"); + TableMap tMap = dbMap.getTable("Discipline"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("Discipline.ID", new Integer(0)); + tMap.addColumn("Discipline.DISCIPLINE", new String()); + } +} diff --git a/src/java/org/thdl/roster/om/map/DocumentMapBuilder.java b/src/java/org/thdl/roster/om/map/DocumentMapBuilder.java new file mode 100755 index 0000000..cbe6127 --- /dev/null +++ b/src/java/org/thdl/roster/om/map/DocumentMapBuilder.java @@ -0,0 +1,85 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class DocumentMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.DocumentMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("Document"); + TableMap tMap = dbMap.getTable("Document"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("Document.ID", new Integer(0)); + tMap.addForeignKey( + "Document.MEMBER_ID", new Integer(0) , "Member" , + "id"); + tMap.addForeignKey( + "Document.DOCUMENT_TYPE_ID", new Integer(0) , "DocumentType" , + "id"); + tMap.addColumn("Document.CONTENT_TYPE", new String()); + tMap.addColumn("Document.PATH", new String()); + tMap.addColumn("Document.FILENAME", new String()); + tMap.addColumn("Document.LABEL", new String()); + } +} diff --git a/src/java/org/thdl/roster/om/map/DocumentTypeMapBuilder.java b/src/java/org/thdl/roster/om/map/DocumentTypeMapBuilder.java new file mode 100755 index 0000000..a0ad42e --- /dev/null +++ b/src/java/org/thdl/roster/om/map/DocumentTypeMapBuilder.java @@ -0,0 +1,76 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class DocumentTypeMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.DocumentTypeMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("DocumentType"); + TableMap tMap = dbMap.getTable("DocumentType"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("DocumentType.ID", new Integer(0)); + tMap.addColumn("DocumentType.DOCUMENT_TYPE", new String()); + } +} diff --git a/src/java/org/thdl/roster/om/map/LanguageMapBuilder.java b/src/java/org/thdl/roster/om/map/LanguageMapBuilder.java new file mode 100755 index 0000000..1efbb30 --- /dev/null +++ b/src/java/org/thdl/roster/om/map/LanguageMapBuilder.java @@ -0,0 +1,76 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class LanguageMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.LanguageMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("Language"); + TableMap tMap = dbMap.getTable("Language"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("Language.ID", new Integer(0)); + tMap.addColumn("Language.LANGUAGE", new String()); + } +} diff --git a/src/java/org/thdl/roster/om/map/MemberMapBuilder.java b/src/java/org/thdl/roster/om/map/MemberMapBuilder.java new file mode 100755 index 0000000..bea8bc7 --- /dev/null +++ b/src/java/org/thdl/roster/om/map/MemberMapBuilder.java @@ -0,0 +1,99 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class MemberMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.MemberMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("Member"); + TableMap tMap = dbMap.getTable("Member"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("Member.ID", new Integer(0)); + tMap.addColumn("Member.CREATED_BY", new Integer(0)); + tMap.addColumn("Member.MODIFIED_BY", new Integer(0)); + tMap.addColumn("Member.CREATED_ON", new Date()); + tMap.addColumn("Member.MODIFIED_ON", new Date()); + tMap.addColumn("Member.DELETED", new String()); + tMap.addForeignKey( + "Member.CONTACT_INFO_ID", new Integer(0) , "ContactInfo" , + "id"); + tMap.addForeignKey( + "Member.RESEARCH_INTEREST_ID", new Integer(0) , "ResearchInterest" , + "id"); + tMap.addForeignKey( + "Member.PUBLICATION_ID", new Integer(0) , "Publication" , + "id"); + tMap.addColumn("Member.MEMBER_TYPE", new String()); + tMap.addForeignKey( + "Member.PERSON_DATA_ID", new Integer(0) , "PersonData" , + "id"); + tMap.addForeignKey( + "Member.PROJECT_DATA_ID", new Integer(0) , "ProjectData" , + "id"); + tMap.addForeignKey( + "Member.ORGANIZATION_DATA_ID", new Integer(0) , "OrganizationData" , + "id"); + } +} diff --git a/src/java/org/thdl/roster/om/map/OrganizationDataMapBuilder.java b/src/java/org/thdl/roster/om/map/OrganizationDataMapBuilder.java new file mode 100755 index 0000000..19f64ce --- /dev/null +++ b/src/java/org/thdl/roster/om/map/OrganizationDataMapBuilder.java @@ -0,0 +1,84 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class OrganizationDataMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.OrganizationDataMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("OrganizationData"); + TableMap tMap = dbMap.getTable("OrganizationData"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("OrganizationData.ID", new Integer(0)); + tMap.addColumn("OrganizationData.NAME", new String()); + tMap.addColumn("OrganizationData.PARENT_ORGANIZATION", new String()); + tMap.addColumn("OrganizationData.DIVISIONS", new String()); + tMap.addColumn("OrganizationData.PEOPLE", new String()); + tMap.addColumn("OrganizationData.MAILING_LIST", new String()); + tMap.addColumn("OrganizationData.DESCRIPTION", new String()); + tMap.addColumn("OrganizationData.HISTORY", new String()); + tMap.addColumn("OrganizationData.EDUCATION_PROGRAMS", new String()); + tMap.addColumn("OrganizationData.RESOURCES", new String()); + } +} diff --git a/src/java/org/thdl/roster/om/map/OrganizationOrganizationTypeMapBuilder.java b/src/java/org/thdl/roster/om/map/OrganizationOrganizationTypeMapBuilder.java new file mode 100755 index 0000000..d3c1aa4 --- /dev/null +++ b/src/java/org/thdl/roster/om/map/OrganizationOrganizationTypeMapBuilder.java @@ -0,0 +1,82 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class OrganizationOrganizationTypeMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.OrganizationOrganizationTypeMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("OrganizationOrganizationType"); + TableMap tMap = dbMap.getTable("OrganizationOrganizationType"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("OrganizationOrganizationType.ID", new Integer(0)); + tMap.addForeignKey( + "OrganizationOrganizationType.ORGANIZATION_TYPE_ID", new Integer(0) , "OrganizationType" , + "id"); + tMap.addForeignKey( + "OrganizationOrganizationType.ORGANIZATION_DATA_ID", new Integer(0) , "OrganizationData" , + "id"); + tMap.addColumn("OrganizationOrganizationType.RELEVANCE", new Integer(0)); + } +} diff --git a/src/java/org/thdl/roster/om/map/OrganizationTypeMapBuilder.java b/src/java/org/thdl/roster/om/map/OrganizationTypeMapBuilder.java new file mode 100755 index 0000000..eafd9ff --- /dev/null +++ b/src/java/org/thdl/roster/om/map/OrganizationTypeMapBuilder.java @@ -0,0 +1,76 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class OrganizationTypeMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.OrganizationTypeMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("OrganizationType"); + TableMap tMap = dbMap.getTable("OrganizationType"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("OrganizationType.ID", new Integer(0)); + tMap.addColumn("OrganizationType.ORGANIZATION_TYPE", new String()); + } +} diff --git a/src/java/org/thdl/roster/om/map/PersonDataMapBuilder.java b/src/java/org/thdl/roster/om/map/PersonDataMapBuilder.java new file mode 100755 index 0000000..a94d8dc --- /dev/null +++ b/src/java/org/thdl/roster/om/map/PersonDataMapBuilder.java @@ -0,0 +1,95 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class PersonDataMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.PersonDataMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("PersonData"); + TableMap tMap = dbMap.getTable("PersonData"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("PersonData.ID", new Integer(0)); + tMap.addColumn("PersonData.THDL_USER_ID", new Integer(0)); + tMap.addColumn("PersonData.FIRSTNAME", new String()); + tMap.addColumn("PersonData.MIDDLENAME", new String()); + tMap.addColumn("PersonData.LASTNAME", new String()); + tMap.addColumn("PersonData.BIO", new String()); + tMap.addColumn("PersonData.HISTORY", new String()); + tMap.addColumn("PersonData.PARENT_ORGANIZATION", new String()); + tMap.addColumn("PersonData.SCHOOL", new String()); + tMap.addColumn("PersonData.DEPARTMENT", new String()); + tMap.addColumn("PersonData.PROGRAM", new String()); + tMap.addColumn("PersonData.ADVISOR", new String()); + tMap.addColumn("PersonData.HIGHEST_DEGREE", new String()); + tMap.addColumn("PersonData.YEAR_BEGAN", new Integer(0)); + tMap.addColumn("PersonData.YEAR_FINISHED", new Integer(0)); + tMap.addColumn("PersonData.OTHER_BACKGROUNDS", new String()); + tMap.addColumn("PersonData.ORGANIZATION", new String()); + tMap.addColumn("PersonData.DIVISION", new String()); + tMap.addColumn("PersonData.TITLE", new String()); + tMap.addColumn("PersonData.START_DATE", new Integer(0)); + tMap.addColumn("PersonData.JOB_DESCRIPTION", new String()); + } +} diff --git a/src/java/org/thdl/roster/om/map/PersonPersonTypeMapBuilder.java b/src/java/org/thdl/roster/om/map/PersonPersonTypeMapBuilder.java new file mode 100755 index 0000000..cd8e6f6 --- /dev/null +++ b/src/java/org/thdl/roster/om/map/PersonPersonTypeMapBuilder.java @@ -0,0 +1,82 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class PersonPersonTypeMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.PersonPersonTypeMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("PersonPersonType"); + TableMap tMap = dbMap.getTable("PersonPersonType"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("PersonPersonType.ID", new Integer(0)); + tMap.addForeignKey( + "PersonPersonType.PERSON_TYPE_ID", new Integer(0) , "PersonType" , + "id"); + tMap.addForeignKey( + "PersonPersonType.PERSON_DATA_ID", new Integer(0) , "PersonData" , + "id"); + tMap.addColumn("PersonPersonType.RELEVANCE", new Integer(0)); + } +} diff --git a/src/java/org/thdl/roster/om/map/PersonTypeMapBuilder.java b/src/java/org/thdl/roster/om/map/PersonTypeMapBuilder.java new file mode 100755 index 0000000..867ed7c --- /dev/null +++ b/src/java/org/thdl/roster/om/map/PersonTypeMapBuilder.java @@ -0,0 +1,76 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class PersonTypeMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.PersonTypeMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("PersonType"); + TableMap tMap = dbMap.getTable("PersonType"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("PersonType.ID", new Integer(0)); + tMap.addColumn("PersonType.PERSON_TYPE", new String()); + } +} diff --git a/src/java/org/thdl/roster/om/map/PhoneMapBuilder.java b/src/java/org/thdl/roster/om/map/PhoneMapBuilder.java new file mode 100755 index 0000000..6f85d78 --- /dev/null +++ b/src/java/org/thdl/roster/om/map/PhoneMapBuilder.java @@ -0,0 +1,78 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class PhoneMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.PhoneMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("Phone"); + TableMap tMap = dbMap.getTable("Phone"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("Phone.ID", new Integer(0)); + tMap.addColumn("Phone.COUNTRY_CODE", new Integer(0)); + tMap.addColumn("Phone.AREA_CODE", new Integer(0)); + tMap.addColumn("Phone.NUMBER", new Integer(0)); + } +} diff --git a/src/java/org/thdl/roster/om/map/ProjectDataMapBuilder.java b/src/java/org/thdl/roster/om/map/ProjectDataMapBuilder.java new file mode 100755 index 0000000..d018906 --- /dev/null +++ b/src/java/org/thdl/roster/om/map/ProjectDataMapBuilder.java @@ -0,0 +1,84 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class ProjectDataMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.ProjectDataMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("ProjectData"); + TableMap tMap = dbMap.getTable("ProjectData"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("ProjectData.ID", new Integer(0)); + tMap.addColumn("ProjectData.NAME", new String()); + tMap.addColumn("ProjectData.PARENT_ORGANIZATION", new String()); + tMap.addColumn("ProjectData.DIVISIONS", new String()); + tMap.addColumn("ProjectData.PEOPLE", new String()); + tMap.addColumn("ProjectData.MAILING_LIST", new String()); + tMap.addColumn("ProjectData.DESCRIPTION", new String()); + tMap.addColumn("ProjectData.HISTORY", new String()); + tMap.addColumn("ProjectData.EDUCATION_PROGRAMS", new String()); + tMap.addColumn("ProjectData.RESOURCES", new String()); + } +} diff --git a/src/java/org/thdl/roster/om/map/ProjectProjectTypeMapBuilder.java b/src/java/org/thdl/roster/om/map/ProjectProjectTypeMapBuilder.java new file mode 100755 index 0000000..bbaffac --- /dev/null +++ b/src/java/org/thdl/roster/om/map/ProjectProjectTypeMapBuilder.java @@ -0,0 +1,82 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class ProjectProjectTypeMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.ProjectProjectTypeMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("ProjectProjectType"); + TableMap tMap = dbMap.getTable("ProjectProjectType"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("ProjectProjectType.ID", new Integer(0)); + tMap.addForeignKey( + "ProjectProjectType.PROJECT_TYPE_ID", new Integer(0) , "ProjectType" , + "id"); + tMap.addForeignKey( + "ProjectProjectType.PROJECT_DATA_ID", new Integer(0) , "ProjectData" , + "id"); + tMap.addColumn("ProjectProjectType.RELEVANCE", new Integer(0)); + } +} diff --git a/src/java/org/thdl/roster/om/map/ProjectTypeMapBuilder.java b/src/java/org/thdl/roster/om/map/ProjectTypeMapBuilder.java new file mode 100755 index 0000000..563eab7 --- /dev/null +++ b/src/java/org/thdl/roster/om/map/ProjectTypeMapBuilder.java @@ -0,0 +1,76 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class ProjectTypeMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.ProjectTypeMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("ProjectType"); + TableMap tMap = dbMap.getTable("ProjectType"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("ProjectType.ID", new Integer(0)); + tMap.addColumn("ProjectType.PROJECT_TYPE", new String()); + } +} diff --git a/src/java/org/thdl/roster/om/map/PublicationMapBuilder.java b/src/java/org/thdl/roster/om/map/PublicationMapBuilder.java new file mode 100755 index 0000000..eda7208 --- /dev/null +++ b/src/java/org/thdl/roster/om/map/PublicationMapBuilder.java @@ -0,0 +1,78 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class PublicationMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.PublicationMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("Publication"); + TableMap tMap = dbMap.getTable("Publication"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("Publication.ID", new Integer(0)); + tMap.addColumn("Publication.FORMAL_PUBLICATIONS", new String()); + tMap.addColumn("Publication.WORKS_IN_PROGRESS", new String()); + tMap.addColumn("Publication.PROJECTS", new String()); + } +} diff --git a/src/java/org/thdl/roster/om/map/ResearchInterestCulturalAreaMapBuilder.java b/src/java/org/thdl/roster/om/map/ResearchInterestCulturalAreaMapBuilder.java new file mode 100755 index 0000000..9047d4a --- /dev/null +++ b/src/java/org/thdl/roster/om/map/ResearchInterestCulturalAreaMapBuilder.java @@ -0,0 +1,82 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class ResearchInterestCulturalAreaMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.ResearchInterestCulturalAreaMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("ResearchInterestCulturalArea"); + TableMap tMap = dbMap.getTable("ResearchInterestCulturalArea"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("ResearchInterestCulturalArea.ID", new Integer(0)); + tMap.addForeignKey( + "ResearchInterestCulturalArea.CULTURAL_AREA_ID", new Integer(0) , "CulturalArea" , + "id"); + tMap.addForeignKey( + "ResearchInterestCulturalArea.RESEARCH_INTEREST_ID", new Integer(0) , "ResearchInterest" , + "id"); + tMap.addColumn("ResearchInterestCulturalArea.RELEVANCE", new Integer(0)); + } +} diff --git a/src/java/org/thdl/roster/om/map/ResearchInterestDisciplineMapBuilder.java b/src/java/org/thdl/roster/om/map/ResearchInterestDisciplineMapBuilder.java new file mode 100755 index 0000000..5548d8f --- /dev/null +++ b/src/java/org/thdl/roster/om/map/ResearchInterestDisciplineMapBuilder.java @@ -0,0 +1,82 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class ResearchInterestDisciplineMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.ResearchInterestDisciplineMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("ResearchInterestDiscipline"); + TableMap tMap = dbMap.getTable("ResearchInterestDiscipline"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("ResearchInterestDiscipline.ID", new Integer(0)); + tMap.addForeignKey( + "ResearchInterestDiscipline.DISCIPLINE_ID", new Integer(0) , "Discipline" , + "id"); + tMap.addForeignKey( + "ResearchInterestDiscipline.RESEARCH_INTEREST_ID", new Integer(0) , "ResearchInterest" , + "id"); + tMap.addColumn("ResearchInterestDiscipline.RELEVANCE", new Integer(0)); + } +} diff --git a/src/java/org/thdl/roster/om/map/ResearchInterestLanguageMapBuilder.java b/src/java/org/thdl/roster/om/map/ResearchInterestLanguageMapBuilder.java new file mode 100755 index 0000000..98074e8 --- /dev/null +++ b/src/java/org/thdl/roster/om/map/ResearchInterestLanguageMapBuilder.java @@ -0,0 +1,82 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class ResearchInterestLanguageMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.ResearchInterestLanguageMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("ResearchInterestLanguage"); + TableMap tMap = dbMap.getTable("ResearchInterestLanguage"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("ResearchInterestLanguage.ID", new Integer(0)); + tMap.addForeignKey( + "ResearchInterestLanguage.LANGUAGE_ID", new Integer(0) , "Language" , + "id"); + tMap.addForeignKey( + "ResearchInterestLanguage.RESEARCH_INTEREST_ID", new Integer(0) , "ResearchInterest" , + "id"); + tMap.addColumn("ResearchInterestLanguage.RELEVANCE", new Integer(0)); + } +} diff --git a/src/java/org/thdl/roster/om/map/ResearchInterestMapBuilder.java b/src/java/org/thdl/roster/om/map/ResearchInterestMapBuilder.java new file mode 100755 index 0000000..7bff797 --- /dev/null +++ b/src/java/org/thdl/roster/om/map/ResearchInterestMapBuilder.java @@ -0,0 +1,80 @@ +package org.thdl.roster.om.map; + +import java.util.Date; +import java.math.BigDecimal; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.map.MapBuilder; +import org.apache.torque.map.DatabaseMap; +import org.apache.torque.map.TableMap; + +/** + * This class was autogenerated by Torque on: + * + * [Wed May 14 19:01:42 EDT 2003] + * + */ +public class ResearchInterestMapBuilder implements MapBuilder +{ + /** + * The name of this class + */ + public static final String CLASS_NAME = + "org.thdl.roster.om.map.ResearchInterestMapBuilder"; + + + /** + * The database map. + */ + private DatabaseMap dbMap = null; + + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return true if this DatabaseMapBuilder is built + */ + public boolean isBuilt() + { + if (dbMap != null) + { + return true; + } + return false; + } + + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public DatabaseMap getDatabaseMap() + { + return this.dbMap; + } + + /** + * The doBuild() method builds the DatabaseMap + * + * @throws TorqueException + */ + public void doBuild() throws TorqueException + { + dbMap = Torque.getDatabaseMap("Roster"); + + dbMap.addTable("ResearchInterest"); + TableMap tMap = dbMap.getTable("ResearchInterest"); + + tMap.setPrimaryKeyMethod(TableMap.ID_BROKER); + + tMap.setPrimaryKeyMethodInfo(tMap.getName()); + + tMap.addPrimaryKey("ResearchInterest.ID", new Integer(0)); + tMap.addColumn("ResearchInterest.INTERESTS", new String()); + tMap.addColumn("ResearchInterest.ACTIVITIES", new String()); + tMap.addColumn("ResearchInterest.COLLABORATION_INTERESTS", new String()); + tMap.addColumn("ResearchInterest.FOCUS_FROM", new Integer(0)); + tMap.addColumn("ResearchInterest.FOCUS_TO", new Integer(0)); + } +} diff --git a/src/java/org/thdl/roster/pages/.DS_Store b/src/java/org/thdl/roster/pages/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..34acba6da6e1cec21656ccdeb6f0d75c5ff944f2 GIT binary patch literal 6148 zcmeH~J&pn~427Q;kXG7;k}}O6fEz@JJpmU$fT%ztfws@l_t|m7ur(T?XUTc76VK0A zOvV6g^LttYO8}pASA6?0GGn~J83S&(;(odxFNa~ccp4wM*8@7Q@wlGL5)lvq5fA|p z5P=C1h(ny`|JQ_`Nsl4|A}|dC{(UHP*P7b8#;1crv;fpO(_x%PFF`Gypw`sZl^L34 z_h4CS(S~?F%Bdyy)zsFtm&3C8u)MQ*7eljN4l4|3Rzoz1fC!8T%zC`^^Z$qbU;jTU zQ78f;@MZ*TzTIs%e5pKJpI*=N`^@^h(W$YW!^2Mi13!va^f0a$pHORR>&gsGKLUY4 Jg9yBoz#j%N6QBS9 literal 0 HcmV?d00001 diff --git a/src/java/org/thdl/roster/pages/Admin.html b/src/java/org/thdl/roster/pages/Admin.html new file mode 100755 index 0000000..4e31e92 --- /dev/null +++ b/src/java/org/thdl/roster/pages/Admin.html @@ -0,0 +1 @@ +

    Restart
    Reset
    Testing

    \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/Admin.page b/src/java/org/thdl/roster/pages/Admin.page new file mode 100755 index 0000000..0452857 --- /dev/null +++ b/src/java/org/thdl/roster/pages/Admin.page @@ -0,0 +1,24 @@ + + + + + + + Adminstration of Roster + + + + + restart + + + + reset + + + Test + + + diff --git a/src/java/org/thdl/roster/pages/Edit.html b/src/java/org/thdl/roster/pages/Edit.html new file mode 100755 index 0000000..00caa07 --- /dev/null +++ b/src/java/org/thdl/roster/pages/Edit.html @@ -0,0 +1,15 @@ + + + + Simple + + + +This application demonstrates some dynamic behavior using Tapestry components. + +

    The current date and time is: Current Date + +

    Click here to refresh. + + + diff --git a/src/java/org/thdl/roster/pages/Edit.java b/src/java/org/thdl/roster/pages/Edit.java new file mode 100755 index 0000000..5cdbc26 --- /dev/null +++ b/src/java/org/thdl/roster/pages/Edit.java @@ -0,0 +1,19 @@ +package org.thdl.roster.pages; + +import java.util.Date; + +import org.apache.tapestry.html.BasePage; + +/** + * @version $Id: Edit.java,v 1.1 2004/01/07 15:32:42 travismccauley Exp $ + * @author Howard Lewis Ship + * + **/ + +public class Edit extends RosterPage +{ + public Date getCurrentDate() + { + return new Date(); + } +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/Edit.page b/src/java/org/thdl/roster/pages/Edit.page new file mode 100755 index 0000000..72821f1 --- /dev/null +++ b/src/java/org/thdl/roster/pages/Edit.page @@ -0,0 +1,16 @@ + + + + + + + + + + + Home + + + diff --git a/src/java/org/thdl/roster/pages/Home.html b/src/java/org/thdl/roster/pages/Home.html new file mode 100755 index 0000000..9ab4490 --- /dev/null +++ b/src/java/org/thdl/roster/pages/Home.html @@ -0,0 +1,38 @@ + +

    +

    Search

    +

    + Find a Person, Organization, or Project by Name:
    + +

    +
    + +

    Create a New Roster Entry

    +

    + Add a new Person
    + Add a new Organization
    + Add a new Project +

    + +

    Edit an Existing Entry

    + +
    +

    Username: + Password :
    +
    + For login assistance, see main Login Page. +

    +
    +
    + + +

    Your Entries

    + +
    + + \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/Home.java b/src/java/org/thdl/roster/pages/Home.java new file mode 100755 index 0000000..f38cd41 --- /dev/null +++ b/src/java/org/thdl/roster/pages/Home.java @@ -0,0 +1,157 @@ +package org.thdl.roster.pages; + +import java.util.*; +import org.apache.tapestry.*; +import org.apache.tapestry.form.*; +import org.apache.torque.*; +import org.apache.torque.util.*; +import org.thdl.roster.*; +import org.thdl.roster.om.*; +import org.apache.log4j.*; + +public class Home extends RosterPage +{ +//attributes + private RosterQuery rosterQuery; + private String login; + private String password; + private Member member; +//accessors + public void setMember(Member member) { + this.member = member; + } + public Member getMember() { + return member; + } + public void setLogin(String login) { + this.login = login; + } + public void setPassword(String password) { + this.password = password; + } + public String getLogin() { + return login; + } + public String getPassword() { + return password; + } + + public void setRosterQuery(RosterQuery rosterQuery) { + this.rosterQuery = rosterQuery; + } + public RosterQuery getRosterQuery() { + if ( null == rosterQuery ) + { + Global global = (Global) getGlobal(); + setRosterQuery( new RosterQuery( global.getRepresentedCountries() ) ); + } + return rosterQuery; + } +//helpers + public List getPersonalEntries() + { + List entries = new LinkedList(); + Visit visit = (Visit)getVisit(); + if ( visit.isAuthenticated() ) + { + Integer userId = new Integer( visit.getThdlUser().getId() ); + Global global = (Global) getGlobal(); + Iterator iter = global.getAllPeople().iterator(); + while( iter.hasNext() ) + { + Member mem = (Member)iter.next(); + if ( mem.getCreatedBy().equals( userId ) ) + { + entries.add( mem ); + } + } + iter = global.getAllOrganizations().iterator(); + while( iter.hasNext() ) + { + Member mem = (Member)iter.next(); + if ( mem.getCreatedBy().equals( userId ) ) + { + entries.add( mem ); + } + } + iter = global.getAllProjects().iterator(); + while( iter.hasNext() ) + { + Member mem = (Member)iter.next(); + if ( mem.getCreatedBy().equals( userId ) ) + { + entries.add( mem ); + } + } + } + return entries; + } +//listeners + public void loginToEdit( IRequestCycle cycle ) + { + //test for Login.validateUser then either forward to ContactInfo/Home + Login loginPage = (Login)cycle.getPage( "Login" ); + loginPage.setLogin( getLogin() ); + loginPage.setPassword( getPassword() ); + if ( loginPage.validateUser() ) + { + if ( getPersonalEntries().size() == 1 ) + { + Visit visit = (Visit) getVisit(); + visit.setMember( (Member)getPersonalEntries().get( 0 ) ); + IPage page = cycle.getPage( "Contact" ); + page.validate( cycle ); + cycle.activate( page ); + } + } + else + { + setWarning( "Invalid Login/Password combination" ); + } + } + + public void editMember( IRequestCycle cycle ) + { + MembersPage page = (MembersPage)cycle.getPage( "People" ); + page.editMember( cycle ); + } + public void addNewMember( IRequestCycle cycle ) + { + MembersPage page = (MembersPage)cycle.getPage( "People" ); + page.addNewMember( cycle ); + } + public void processForm( IRequestCycle cycle ) throws Exception + { + List members = null; + try + { + Global global =(Global)getGlobal(); + RosterQueryAgent agent = new RosterQueryAgent( global.getTorqueConfig() ); + String sql = agent.buildQuery( getRosterQuery() ); + Logger logger = Logger.getLogger("org.thdl.roster"); + logger.debug( "About to call RosterQueryAgent.executeQuery( sql ) where sql = " +sql ); + members = agent.executeQuery( sql ); + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( te ); + } + MembersPage page = (MembersPage) cycle.getPage( "SearchResults" ); + page.setMembers( members ); + cycle.activate( page ); + } + public void detach() + { + getRosterQuery().clear(); + setLogin( null ); + setPassword( null ); + super.detach(); + } + +//constructors + + public Home() + { + super(); + } +} diff --git a/src/java/org/thdl/roster/pages/Home.page b/src/java/org/thdl/roster/pages/Home.page new file mode 100755 index 0000000..ea96213 --- /dev/null +++ b/src/java/org/thdl/roster/pages/Home.page @@ -0,0 +1,75 @@ + + + + + + + Home + + + + + + + + + + + + + + + + + + person + + + + + + organization + + + + + + project + + + + + + + + + + + + + + + + + + + + + + + li + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/pages/Login.html b/src/java/org/thdl/roster/pages/Login.html new file mode 100755 index 0000000..c612d9c --- /dev/null +++ b/src/java/org/thdl/roster/pages/Login.html @@ -0,0 +1,81 @@ + + +
    + +
    +

    Login

    +
    +

    + If you have never before registered to use a THDL + resource and therefore lack a THDL user name, please click here to + obtain one. If you are unsure what a THDL user name is or why you + need it, please read the section below, "Why do I need a THDL username?". +

    + +

    Enter your THDL username: + (or your e-mail address).
    + Enter your THDL password : + +

    +
    +
    + +
    +

    Forgot Your Password

    +
    +

    Please contact travis.mccauley@virginia.edu for login remiders until we activate the automated reminder feature below.

    +

    + Did you forget your login? Enter your email address and we'll send it to you. +
    + Email: + +

    +
    +
    + +

    Why do I need a THDL username?

    +

    +THDL offers a variety of resources such as the Community Roster, the +Tibetan Dictionary, the Audio-Video database and so forth which +allow general users to customize these resources to their needs, as +well as collaborators from around the world to simultaneously work +on building the resources. To faciliate use of THDL, we have created +a unified THDL login ID respository that can be utilized to +personalize your use of THDL, as well as access your own information +within THDL. Once you have created your own THDL ID, you can use +that single ID to maintain your own resources and preferences within +THDL. If you have never before registered with THDL and lack an ID, +then you will need to first register and obtain a personalized +username/password for this purpose. For example, individuals wanting +to create a Community Roster entry for themselves will first need a +THDL user name in order to create a roster entry. To create your own +THDL ID, please click here. +

    + +

    THDL Privacy Policy

    +

    +We will never rent, lend, sell or otherwise distribute your e-mail address, street address or phone number to anyone. +The Community Roster is a publically accessible directory, however, so if you do not wish your +contact information to be made public, please do not include it in your entry. +

    +
    + +
    + +
    +

    Register as a New User

    +
    +

    Firstname:

    +

    Middlename:

    +

    Lastname:

    +

    Email:

    +

    Username:

    +

    Password:

    +

    Repeat Password:

    +

    Password Hint:

    +

    +
    +
    +
    + +
    \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/Login.java b/src/java/org/thdl/roster/pages/Login.java new file mode 100755 index 0000000..4b3a858 --- /dev/null +++ b/src/java/org/thdl/roster/pages/Login.java @@ -0,0 +1,182 @@ +package org.thdl.roster.pages; + +import java.util.*; +import java.text.*; +import org.apache.torque.*; +import org.apache.tapestry.*; +import org.apache.tapestry.html.BasePage; + +import org.thdl.users.*; +import org.thdl.roster.*; +import org.thdl.roster.om.*; +import org.thdl.roster.components.Border; +import org.apache.log4j.*; + +public class Login extends RosterPage +{ +//attributes + private boolean newUser; + private String login; + private String password; + private String passwordCopy; + private String forward; +//accessors + public void setNewUser(boolean newUser) { + this.newUser = newUser; + } + public boolean getNewUser() { + return newUser; + } + public void setLogin(String login) { + this.login = login; + } + public void setPassword(String password) { + this.password = password; + } + public String getLogin() { + return login; + } + public String getPassword() { + return password; + } + public void setPasswordCopy(String passwordCopy) { + this.passwordCopy = passwordCopy; + } + public String getPasswordCopy() { + return passwordCopy; + } + public void setForward(String forward) { + this.forward = forward; + Tapestry.fireObservedChange( this, "forward", forward ); + } + public String getForward() { + if (null == forward) + { + setForward( "Home" ); + } + return forward; + } +//helpers + public boolean validateUser() + { + boolean rVal = false; + ThdlUser thdlUser = null; + try + { + thdlUser = ThdlUserRepository.getInstance().validate( getLogin(), getPassword() ); + rVal = true; + Visit visit = (Visit) getVisit(); + visit.setThdlUser( thdlUser ); + visit.setAuthenticated( true ); + } + catch (ThdlUserRepositoryException ture) + { + setMessage( ture.getMessage() ); + } + + return rVal; + } + //tapestry helpers + public void detach() + { + setLogin( null ); + setPassword( null ); + setPasswordCopy( null ); + setMessage( null ); + setWarning( null ); + setNewUser( false ); + super.detach(); + } + //tapestry listeners + public void registerNewUser(IRequestCycle cycle) + { + setNewUser( true ); + } + public void loginFormSubmit(IRequestCycle cycle) + { + if ( validateUser() ) + { + proceed( cycle ); + } + } + private void proceed( IRequestCycle cycle ) + { + Visit visit = (Visit) getVisit(); + + //do some logging + String name = visit.getThdlUser().getFirstname() + " " + visit.getThdlUser().getLastname() ; + Date now = new Date( System.currentTimeMillis() ); + String date = new SimpleDateFormat().format( now ); + Logger logger = Logger.getLogger( "org.thdl.roster.pages" ); + logger.info( name + " logged in at " + date ); + Member member = (Member) visit.getMember(); + if ( null != member && member.isNew() ) + { + try + { + member.getContactInfo().setContactName( visit.getThdlUser().getFirstname() + " " + visit.getThdlUser().getLastname() ); + member.getContactInfo().setEmail( visit.getThdlUser().getEmail() ); + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( te ); + } + } + RosterPage page = (RosterPage) cycle.getPage( getForward() ); + page.validate( cycle ); + cycle.activate( page ); + } + public void sendInfoFormSubmit(IRequestCycle cycle) + { + Visit visit = (Visit) getVisit(); + } + public void newUserFormSubmit(IRequestCycle cycle) + { + Visit visit = (Visit) getVisit(); + try + { + boolean insertUser=false; + if ( ThdlUserRepository.getInstance().doesNotAlreadyExist( visit.getThdlUser() ) ) + { + insertUser=true; + } + if ( ! getPassword().equals( getPasswordCopy() ) ) + { + insertUser=false; + setWarning( "Your two password entries were not the same. Please re-enter your password." ); + } + else + { + visit.getThdlUser().setPassword( getPassword() ); + } + + if ( insertUser ) + { + ThdlUserRepository.getInstance().insertUser( visit.getThdlUser() ); + setMessage( "Your new user entry was successfully submitted." ); + visit.setAuthenticated( true ); + proceed( cycle ); + } + else + { + setMessage( "Your new user entry was not submitted." ); + } + } + catch (UsernameAlreadyExistsException uaee) + { + setWarning( uaee.getMessage() ); + } + catch (UserEmailAlreadyExistsException ueaee) + { + setWarning( ueaee.getMessage() ); + } + catch (ThdlUserRepositoryException ture) + { + setWarning( ture.getMessage() ); + } + } + public Login() + { + setNewUser( false ); + } +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/Login.page b/src/java/org/thdl/roster/pages/Login.page new file mode 100755 index 0000000..5b3cec3 --- /dev/null +++ b/src/java/org/thdl/roster/pages/Login.page @@ -0,0 +1,123 @@ + + + + + + + Roster Login Page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Send Login Information + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/pages/Member.html b/src/java/org/thdl/roster/pages/Member.html new file mode 100755 index 0000000..361007b --- /dev/null +++ b/src/java/org/thdl/roster/pages/Member.html @@ -0,0 +1 @@ +

    Essentials | Background | Activities | Works | Contact | Files

    Essentials

    Back to top

    Activities

    Fields:
    Cultural Focus:
    Languages Used:

    Historical Focus: From the century to the century.

    Back to top

    Works

    Back to top

    Contact Information


    Back to top

    Further Resources

    Files

    To download these files: right-click (mac: control-click) the link and in Internet Explorer, choose Dowload Link to Disk and in Netscape, choose Save Link Target As.... If you just click the link, the file might open in your browser with unexpected or undesirable results.

    Entry created:
    Entry revised:

    Back to top

    \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/Member.page b/src/java/org/thdl/roster/pages/Member.page new file mode 100755 index 0000000..05dfcc6 --- /dev/null +++ b/src/java/org/thdl/roster/pages/Member.page @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + Contact Name + + + + + + + + + + Website + + + + + + Email + + + + + + Website + + + + + + + + + + + Phone + + + + + Fax + + + + + + + + + + + + + + + + + + + + + + + + + + + + Formal Products/Publications + + + + + + Works In Progress + + + + + + Projects + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Activities + + + + + + Research Interests + + + + + + Collaboration Interests + + + + + + + + + diff --git a/src/java/org/thdl/roster/pages/MemberPage.java b/src/java/org/thdl/roster/pages/MemberPage.java new file mode 100755 index 0000000..f7697f7 --- /dev/null +++ b/src/java/org/thdl/roster/pages/MemberPage.java @@ -0,0 +1,28 @@ +package org.thdl.roster.pages; + +import org.thdl.roster.om.*; +import org.apache.torque.*; + +public class MemberPage extends RosterPage +{ +//attributes + private Member member; +//accessors + public void setMember(Member member) { + this.member = member; + } + public Member getMember() { + return member; + } +//helpers + public boolean isHistoricalDisplayOk() throws TorqueException + { + ResearchInterest ri = getMember().getResearchInterest(); + Integer neg1 = new Integer( -1 ); + boolean b = ! ( neg1.equals( ri.getFocusFrom() ) || neg1.equals( ri.getFocusTo() ) ); + return b; + } + public MemberPage() + { + } +} diff --git a/src/java/org/thdl/roster/pages/Members.html b/src/java/org/thdl/roster/pages/Members.html new file mode 100755 index 0000000..17d28e2 --- /dev/null +++ b/src/java/org/thdl/roster/pages/Members.html @@ -0,0 +1,55 @@ + + +

    +

    + + +

    + +

    Recent Entries

    + +
    + +
    +

    + + +

    + () +
    + +
    + () +
    + +
    + () +
    + + + + +
    + + + +

    + +
    +

    + +

    +
    + +
    + +
    + + +
    \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/Members.page b/src/java/org/thdl/roster/pages/Members.page new file mode 100755 index 0000000..53bcd8d --- /dev/null +++ b/src/java/org/thdl/roster/pages/Members.page @@ -0,0 +1,74 @@ + + + + + + + + + + + + + person + + + + + + organization + + + + + + project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/pages/MembersPage.java b/src/java/org/thdl/roster/pages/MembersPage.java new file mode 100755 index 0000000..f42e182 --- /dev/null +++ b/src/java/org/thdl/roster/pages/MembersPage.java @@ -0,0 +1,206 @@ +package org.thdl.roster.pages; + +import java.util.*; +import org.apache.torque.*; +import org.apache.torque.util.*; +import org.apache.tapestry.html.BasePage; +import org.apache.tapestry.IRequestCycle; + +import org.apache.tapestry.IPage; +import org.apache.tapestry.ApplicationRuntimeException; +import org.thdl.roster.*; +import org.thdl.roster.om.*; + +public class MembersPage extends RosterPage +{ +//attributes + private HashMap memberTypes; + private List members; + private Member member; + private boolean memberTypeChanged; +//accessors + public void setMemberTypeChanged(boolean memberTypeChanged) { + this.memberTypeChanged = memberTypeChanged; + } + public boolean getMemberTypeChanged() { + return memberTypeChanged; + } + public void setMembers(List members) { + this.members = members; + } + public void setMember(Member member) { + setMemberTypeChanged( false ); + if ( null != member && ! member.getClass().isInstance( getMember() ) ) + { + setMemberTypeChanged( true ); + } + this.member = member; + } + public List getMembers() { + return members; + } + public Member getMember() { + return member; + } + public void setMemberTypes(HashMap memberTypes) { + this.memberTypes = memberTypes; + } + public HashMap getMemberTypes() { + return memberTypes; + } +//synthetic accessors + public String getMemberTypeHeader() + { + String memType = getMember().getMemberType(); + if ( memType.equals( "person" ) ) + memType = "People"; + else if ( memType.equals( "organization" ) ) + memType = "Organizations"; + else if ( memType.equals( "project" ) ) + memType = "Projects"; + return memType; + } + public List getAllGivenTypeOfMembers() + { + List members = null; + Global global = (Global) getGlobal(); + if ( getPageName().equals( "People" ) ) + { + members = global.getAllPeople(); + } + if ( getPageName().equals( "Projects" ) ) + { + members = global.getAllProjects(); + } + if ( getPageName().equals( "Organizations" ) ) + { + members = global.getAllOrganizations(); + } + return members; + } + +//listeners + + public void addNewMember( IRequestCycle cycle ) + { + Object[] params = cycle.getServiceParameters(); + String memberType = (String) params[0]; + RosterMember member = (RosterMember) getMemberTypes().get( memberType ); + try + { + Visit visit = (Visit) getVisit(); + visit.setMember( produceMember( member ) ); + } + catch ( TorqueException e ) + { + throw new ApplicationRuntimeException( e ); + } + catch ( RosterMemberTypeException e ) + { + throw new ApplicationRuntimeException( e ); + } + IPage page = cycle.getPage( "Contact" ); + page.validate( cycle ); + cycle.activate( page ); + } + + public void viewMember( IRequestCycle cycle ) + { + Integer memberPK = (Integer)cycle.getServiceParameters()[0]; + Member member = null; + try + { + member = MemberPeer.retrieveByPK( memberPK ); + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( te ); + } + + MemberPage page = null; + if ( member instanceof Person ) + { + page = (MemberPage) cycle.getPage( "Person" ); + } + else if ( member instanceof Project ) + { + page = (MemberPage) cycle.getPage( "Project" ); + } + else if ( member instanceof Organization ) + { + page = (MemberPage) cycle.getPage( "Organization" ); + } + page.setMember( member ); + cycle.activate( page ); + } + public void editMember( IRequestCycle cycle ) + { + Visit visit = (Visit) getVisit(); + Object[] objArray = cycle.getServiceParameters(); + Object obj = objArray[0]; + Integer memberPK = (Integer) obj; + + try + { + visit.setMember( MemberPeer.retrieveByPK( memberPK ) ); + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( te ); + } + + IPage page = cycle.getPage( "Contact" ); + page.validate( cycle ); + cycle.activate( page ); + } + +//helpers + public RosterMember produceMember( RosterMember rosterMember ) throws TorqueException, RosterMemberTypeException + { + if ( rosterMember instanceof Person ) + { + Person pers = (Person) rosterMember; + rosterMember = (Person) pers.copy(); + } + else if ( rosterMember instanceof Project ) + { + Project proj = (Project) rosterMember; + rosterMember = (Project) proj.copy(); + } + else if ( rosterMember instanceof Organization ) + { + Organization org = (Organization) rosterMember; + rosterMember = (Organization) org.copy(); + } + return rosterMember; + } + + public void detach() + { + super.detach(); + } + +//constructors + public MembersPage() + { + try + { + if ( ! Torque.isInit() ) + { + Global global = (Global) getGlobal(); + Torque.init( global.getTorqueConfig() ); + } + Person person = new Person(); + Project project = new Project(); + Organization org = new Organization(); + setMemberTypes( new HashMap() ); + getMemberTypes().put( "person" , person ); + getMemberTypes().put( "project" , project ); + getMemberTypes().put( "organization" , org ); + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( te.getMessage() ); + } + } +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/RosterPage.java b/src/java/org/thdl/roster/pages/RosterPage.java new file mode 100755 index 0000000..d8c52e7 --- /dev/null +++ b/src/java/org/thdl/roster/pages/RosterPage.java @@ -0,0 +1,99 @@ +package org.thdl.roster.pages; + +import org.apache.torque.*; +import org.apache.tapestry.*; +import org.apache.tapestry.html.BasePage; +import org.thdl.roster.*; + +public class RosterPage extends BasePage +{ +//attributes + private String message; + private String warning; + private String nextPage; +//accessors + public void setNextPage(String nextPage) { + this.nextPage = nextPage; + } + public String getNextPage() { + return nextPage; + } + + public void setMessage(String message) + { + this.message = message; + } + + public String getMessage() + { + return message; + } + + public void setWarning(String warning) + { + this.warning = warning; + } + + public String getWarning() + { + return warning; + } +//helpers + public void torqueInit() + { + try + { + if ( ! Torque.isInit() ) + { + Global global = (Global) getGlobal(); + Torque.init( global.getTorqueConfig() ); + } + } + catch (TorqueException te ) + { + throw new ApplicationRuntimeException( te ); + } + } + + public boolean isLoggedIn() + { + Visit visit = (Visit)getPage().getEngine().getVisit(); + boolean b = false; + if (null != visit && visit.isAuthenticated() ) + b = true; + return b; + } + + public void logout(IRequestCycle cycle) + { + getEngine().setVisit(null); + RosterPage home = (RosterPage)cycle.getPage("Home"); + home.setMessage("You have successfully logged out of the Thdl Community Roster."); + cycle.activate(home); + } + + public void detach() + { + setMessage(null); + setWarning(null); + super.detach(); + } +//constructors + public RosterPage() + { + super(); + try + { + if ( !Torque.isInit() ) + { + Global global = (Global) getGlobal(); + Torque.init( global.getTorqueConfig() ); + } + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + } + +} diff --git a/src/java/org/thdl/roster/pages/Search.html b/src/java/org/thdl/roster/pages/Search.html new file mode 100755 index 0000000..b68729e --- /dev/null +++ b/src/java/org/thdl/roster/pages/Search.html @@ -0,0 +1,38 @@ + +
    +

    Names and Text Fields

    +

    + These text search fields are optional. You can leave them blank
    and narrow your search with the other parameters below.

    + Name contains:
    + Organizational Base contains:
    + Any text field contains: +

    +

    Roster Member Types

    +

    + +
    +
    + Choose a language:
    +

    + +

    + +

    + +
    +
    \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/Search.java b/src/java/org/thdl/roster/pages/Search.java new file mode 100755 index 0000000..2d1ada7 --- /dev/null +++ b/src/java/org/thdl/roster/pages/Search.java @@ -0,0 +1,303 @@ +package org.thdl.roster.pages; + +import java.util.*; +import org.apache.tapestry.*; +import org.apache.tapestry.form.*; +import org.apache.torque.*; +import org.apache.torque.util.*; +import org.thdl.roster.*; +import org.thdl.roster.om.*; +import org.apache.log4j.*; + +public class Search extends RosterPage +{ +//attributes + private RosterQuery rosterQuery; + private IPropertySelectionModel disciplineModel; + private IPropertySelectionModel culturalAreaModel; + private IPropertySelectionModel languageModel; + private IPropertySelectionModel personTypeModel; + private IPropertySelectionModel projectTypeModel; + private IPropertySelectionModel organizationTypeModel; + +//accessors + public void setCulturalAreaModel( IPropertySelectionModel culturalAreaModel ) + { + this.culturalAreaModel = culturalAreaModel; + } + + public IPropertySelectionModel getCulturalAreaModel() + { + if ( culturalAreaModel == null ) + { + setCulturalAreaModel( buildCulturalAreaModel() ); + } + return culturalAreaModel; + } + + public void setLanguageModel( IPropertySelectionModel languageModel ) + { + this.languageModel = languageModel; + } + + public IPropertySelectionModel getLanguageModel() + { + if ( languageModel == null ) + { + setLanguageModel( buildLanguageModel() ); + } + return languageModel; + } + + public void setDisciplineModel( IPropertySelectionModel disciplineModel ) + { + this.disciplineModel = disciplineModel; + } + + public IPropertySelectionModel getDisciplineModel() + { + if ( disciplineModel == null ) + { + setDisciplineModel( buildDisciplineModel() ); + } + return disciplineModel; + } + + public void setRosterQuery(RosterQuery rosterQuery) { + this.rosterQuery = rosterQuery; + } + public RosterQuery getRosterQuery() { + if ( null == rosterQuery ) + { + Global global = (Global) getGlobal(); + setRosterQuery( new RosterQuery( global.getRepresentedCountries() ) ); + } + return rosterQuery; + } +//helpers + public IPropertySelectionModel buildDisciplineModel() + { + List disciplines; + try + { + Criteria crit = new Criteria(); + crit.addAscendingOrderByColumn( DisciplinePeer.DISCIPLINE ); + disciplines = new LinkedList( BaseDisciplinePeer.doSelect( crit ) ); + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + EntitySelectionModel disciplineModel = new EntitySelectionModel(); + ListIterator looper = disciplines.listIterator( 0 ); + disciplineModel.add( null , "All Disciplines" ); + while ( looper.hasNext() ) + { + Discipline discipline = (Discipline) looper.next(); + disciplineModel.add( discipline.getId(), discipline.getDiscipline() ); + } + return disciplineModel; + } + public IPropertySelectionModel buildCulturalAreaModel() + { + LinkedList list; + try + { + Criteria crit = new Criteria(); + crit.addAscendingOrderByColumn( CulturalAreaPeer.CULTURAL_AREA ); + list = new LinkedList( BaseCulturalAreaPeer.doSelect( crit ) ); + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + EntitySelectionModel culturalAreaModel = new EntitySelectionModel(); + ListIterator looper = list.listIterator( 0 ); + culturalAreaModel.add( null, "All Areas" ); + while ( looper.hasNext() ) + { + CulturalArea culturalArea = (CulturalArea) looper.next(); + culturalAreaModel.add( culturalArea.getId(), culturalArea.getCulturalArea() ); + } + return culturalAreaModel; + } + + + public IPropertySelectionModel buildLanguageModel() + { + LinkedList list; + try + { + Criteria crit = new Criteria(); + crit.addAscendingOrderByColumn( LanguagePeer.LANGUAGE ); + list = new LinkedList( BaseLanguagePeer.doSelect( crit ) ); + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + EntitySelectionModel languageModel = new EntitySelectionModel(); + ListIterator looper = list.listIterator( 0 ); + languageModel.add( null, "All Languages" ); + while ( looper.hasNext() ) + { + Language language = (Language) looper.next(); + languageModel.add( language.getId(), language.getLanguage() ); + } + return languageModel; + } + + + public void setPersonTypeModel(IPropertySelectionModel personTypeModel) + { + this.personTypeModel = personTypeModel; + } + + public IPropertySelectionModel getPersonTypeModel() + { + if (personTypeModel == null) + { + setPersonTypeModel( buildPersonTypeModel() ); + } + return personTypeModel; + } + + public void setProjectTypeModel(IPropertySelectionModel projectTypeModel) + { + this.projectTypeModel = projectTypeModel; + } + + public IPropertySelectionModel getProjectTypeModel() + { + if (projectTypeModel == null) + { + setProjectTypeModel( buildProjectTypeModel() ); + } + return projectTypeModel; + } + + public void setOrganizationTypeModel(IPropertySelectionModel organizationTypeModel) + { + this.organizationTypeModel = organizationTypeModel; + } + + public IPropertySelectionModel getOrganizationTypeModel() + { + if (organizationTypeModel == null) + { + setOrganizationTypeModel( buildOrganizationTypeModel() ); + } + return organizationTypeModel; + } + + public IPropertySelectionModel buildPersonTypeModel() + { + try + { + EntitySelectionModel personTypeModel = new EntitySelectionModel(); + Criteria crit = new Criteria(); + crit.addAscendingOrderByColumn( PersonTypePeer.PERSON_TYPE ); + LinkedList list = new LinkedList( PersonTypePeer.doSelect( crit ) ); + PersonType personType; + ListIterator looper = list.listIterator( 0 ); + personTypeModel.add( null, "All People" ); + while ( looper.hasNext() ) + { + personType = (PersonType) looper.next(); + personTypeModel.add( personType.getId(), personType.getPersonType() ); + } + return personTypeModel; + } + catch (TorqueException te) { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + } + + public IPropertySelectionModel buildProjectTypeModel() + { + try + { + EntitySelectionModel projectTypeModel = new EntitySelectionModel(); + Criteria crit = new Criteria(); + crit.addAscendingOrderByColumn( ProjectTypePeer.PROJECT_TYPE ); + LinkedList list = new LinkedList( ProjectTypePeer.doSelect( crit ) ); + ProjectType projectType; + ListIterator looper = list.listIterator( 0 ); + projectTypeModel.add( null, "All Projects" ); + while ( looper.hasNext() ) + { + projectType = (ProjectType) looper.next(); + projectTypeModel.add( projectType.getId(), projectType.getProjectType() ); + } + return projectTypeModel; + } + catch (TorqueException te) { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + } + + public IPropertySelectionModel buildOrganizationTypeModel() + { + try + { + EntitySelectionModel organizationTypeModel = new EntitySelectionModel(); + Criteria crit = new Criteria(); + crit.addAscendingOrderByColumn( OrganizationTypePeer.ORGANIZATION_TYPE ); + LinkedList list = new LinkedList( OrganizationTypePeer.doSelect( crit ) ); + OrganizationType organizationType; + ListIterator looper = list.listIterator( 0 ); + organizationTypeModel.add( null, "All Organizations"); + while ( looper.hasNext() ) + { + organizationType = (OrganizationType) looper.next(); + organizationTypeModel.add( organizationType.getId(), organizationType.getOrganizationType() ); + } + return organizationTypeModel; + } + catch (TorqueException te) { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + } + +//listeners + + public void processForm( IRequestCycle cycle ) throws Exception + { + List members = null; + try + { + Global global =(Global)getGlobal(); + RosterQueryAgent agent = new RosterQueryAgent( global.getTorqueConfig() ); + String sql = agent.buildQuery( getRosterQuery() ); + Logger logger = Logger.getLogger("org.thdl.roster"); + logger.debug( "About to call RosterQueryAgent.executeQuery( sql ) where sql = " +sql ); + members = agent.executeQuery( sql ); + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( te ); + } + if ( members != null && members.size() > 0 ) + { + MembersPage page = (MembersPage) cycle.getPage( "SearchResults" ); + page.setMembers( members ); + cycle.activate( page ); + } + else + { + setWarning( "Search returned zero results. Please try again" ); + } + } + public void detach() + { + getRosterQuery().clear(); + super.detach(); + } + +//constructors + + public Search() + { + super(); + } +} diff --git a/src/java/org/thdl/roster/pages/Search.page b/src/java/org/thdl/roster/pages/Search.page new file mode 100755 index 0000000..19235a7 --- /dev/null +++ b/src/java/org/thdl/roster/pages/Search.page @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + Search + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/pages/SearchResults.html b/src/java/org/thdl/roster/pages/SearchResults.html new file mode 100755 index 0000000..7381ae8 --- /dev/null +++ b/src/java/org/thdl/roster/pages/SearchResults.html @@ -0,0 +1,42 @@ + + +
    + +
    +

    +
    + +
    + +

    + + +

    + () +
    + +
    + () +
    + +
    + () +
    + + + +
    + + + +
    + + read more + +

    + +
    + +
    + +
    \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/SearchResults.page b/src/java/org/thdl/roster/pages/SearchResults.page new file mode 100755 index 0000000..10d3bc5 --- /dev/null +++ b/src/java/org/thdl/roster/pages/SearchResults.page @@ -0,0 +1,61 @@ + + + + + + + Search Results + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/pages/forms/.DS_Store b/src/java/org/thdl/roster/pages/forms/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 +

    Please enter any contact information you would like to share with others. +Most fields are optional but please be sure to enter a contact name, email address and your country. +

    + +

    THDL Privacy Policy

    +

    +We will never rent, lend, sell or otherwise distribute your e-mail address, street address or phone number to anyone. +The Community Roster is a publically accessible directory, however, so if you do not wish your +contact information to be made public, please do not include it in your entry. +

    + + + + + +

    + Contact name:
    + Email:
    + Website: +

    + +

    Address

    + +

    +

    +

    + +

    Phone Numbers

    + +

    + The three boxes correspond to country code, area code, and personal number. Please leave the first box empty if you don't know the country code +

    +

    + Phone:


    + Fax:
    +

    + + + + + + + + \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/forms/ContactInfo.page b/src/java/org/thdl/roster/pages/forms/ContactInfo.page new file mode 100755 index 0000000..4b57d0b --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/ContactInfo.page @@ -0,0 +1,66 @@ + + + + + + + Contact Information + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Continue + continue + + + + + Finish + + finish + + + + + diff --git a/src/java/org/thdl/roster/pages/forms/ContactInfoPage.java b/src/java/org/thdl/roster/pages/forms/ContactInfoPage.java new file mode 100755 index 0000000..b3e9e55 --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/ContactInfoPage.java @@ -0,0 +1,70 @@ +package org.thdl.roster.pages.forms; + +import java.util.List; +import java.util.LinkedList; +import org.apache.torque.*; +import org.apache.tapestry.html.BasePage; +import org.apache.tapestry.IRequestCycle; +import org.apache.tapestry.IEngine; +import org.apache.tapestry.PageRedirectException; +import org.apache.tapestry.ApplicationRuntimeException; +import org.thdl.roster.*; +import org.thdl.roster.om.*; + +public class ContactInfoPage extends MemberFormSeries +{ + +//tapestry listeners + public void processForm(IRequestCycle cycle) + { + Visit visit = (Visit) getVisit(); + Member member = (Member) visit.getMember(); + member.save( new Integer( visit.getThdlUser().getId() ) ); + try + { + if ( member instanceof Person ) + { + Person person = (Person)member; + person.getPersonData().setFirstname( visit.getThdlUser().getFirstname() ); + person.getPersonData().setLastname( visit.getThdlUser().getLastname() ); + person.getPersonData().setMiddlename( visit.getThdlUser().getMiddlename() ); + } + member.getContactInfo().getAddress().save(); + member.getContactInfo().getPhoneRelatedByPhone().save(); + member.getContactInfo().getPhoneRelatedByFax().save(); + member.getContactInfo().setAddressKey( member.getContactInfo().getAddress().getPrimaryKey() ); + member.getContactInfo().setPhoneRelatedByPhoneKey( member.getContactInfo().getPhoneRelatedByPhone().getPrimaryKey() ); + member.getContactInfo().setPhoneRelatedByFaxKey( member.getContactInfo().getPhoneRelatedByFax().getPrimaryKey() ); + member.getContactInfo().save(); + member.setContactInfoKey( member.getContactInfo().getPrimaryKey() ); + member.save(); + } + catch (Exception e ) + { + throw new ApplicationRuntimeException( e ); + } + } + public void detach() + { + setNextPage( "Background" ); + super.detach(); + } + +//constructors + public ContactInfoPage() + { + try + { + if ( !Torque.isInit() ) + { + Global global = (Global) getGlobal(); + Torque.init( global.getTorqueConfig() ); + } + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + setNextPage("Background"); + } +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/forms/MemberData.html b/src/java/org/thdl/roster/pages/forms/MemberData.html new file mode 100755 index 0000000..1db59bb --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/MemberData.html @@ -0,0 +1,32 @@ + +

    Please enter information about your history and work background. +All fields are optional but please at least enter an overview/brief bio to give others a sense of who you are. You can use the word "freelance" and so forth in appropriate places such as "organizational base" and "organization" if you are self-employed.

    + + + +

    + Choose items from below that best describe you. Then sort your selections by relevance: + +

    + + + +

    + Choose items from below that best describe your organization. Then sort your selections by relevance: + + + + + + \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/forms/MemberData.java b/src/java/org/thdl/roster/pages/forms/MemberData.java new file mode 100755 index 0000000..383b2a8 --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/MemberData.java @@ -0,0 +1,265 @@ +package org.thdl.roster.pages.forms; + +import java.util.*; + +import org.apache.tapestry.*; +import org.apache.tapestry.html.*; +import org.apache.tapestry.form.*; +import org.apache.tapestry.contrib.palette.SortMode; + +import org.apache.torque.*; +import org.apache.torque.om.*; +import org.apache.torque.util.*; + +import org.thdl.roster.*; +import org.thdl.roster.om.*; +import org.thdl.roster.pages.*; + +public class MemberData extends MemberFormSeries +{ +//attributes + // private List selectedMemberTypes; + private IPropertySelectionModel personTypeModel; + private IPropertySelectionModel projectTypeModel; + private IPropertySelectionModel organizationTypeModel; +//accessors + public void setPersonTypeModel(IPropertySelectionModel personTypeModel) + { + this.personTypeModel = personTypeModel; + } + + public IPropertySelectionModel getPersonTypeModel() + { + if (personTypeModel == null) + { + setPersonTypeModel( buildPersonTypeModel() ); + } + return personTypeModel; + } + + public void setProjectTypeModel(IPropertySelectionModel projectTypeModel) + { + this.projectTypeModel = projectTypeModel; + } + + public IPropertySelectionModel getProjectTypeModel() + { + if (projectTypeModel == null) + { + setProjectTypeModel( buildProjectTypeModel() ); + } + return projectTypeModel; + } + + public void setOrganizationTypeModel(IPropertySelectionModel organizationTypeModel) + { + this.organizationTypeModel = organizationTypeModel; + } + + public IPropertySelectionModel getOrganizationTypeModel() + { + if (organizationTypeModel == null) + { + setOrganizationTypeModel( buildOrganizationTypeModel() ); + } + return organizationTypeModel; + } + +/* public List getSelectedMemberTypes() + { + return selectedMemberTypes; + } + + public void setSelectedMemberTypes(List selectedMemberTypes) + { + this.selectedMemberTypes = selectedMemberTypes; + } + */ +//helpers +//tapestry listeners + public void processForm(IRequestCycle cycle) + { + Visit visit = (Visit) getVisit(); + Member member = (Member) visit.getMember(); + if ( member instanceof Person ) + { + try + { + Person person = (Person) member; + + //don't move this line! + List flatDataIds = person.getPersonData().getPersonTypeIdList(); + + Integer userId = new Integer( visit.getThdlUser().getId() ); + person.getPersonData().setThdlUserId( userId ); + person.getPersonData().save(); + person.setPersonDataKey( member.getPersonData().getPrimaryKey() ); + person.save(); + + Criteria crit = new Criteria(); + crit.add( PersonPersonTypePeer.PERSON_DATA_ID, person.getPersonData().getId() ); + List torqueObjects = PersonPersonTypePeer.doSelect( crit ); + + Integer memberDataId = person.getPersonData().getId(); + + PersonPersonType template = new PersonPersonType(); + + PaletteMergeTableProcessor.processPalette( flatDataIds, torqueObjects, memberDataId, template ); + } + catch ( RosterMemberTypeException rmte ) + { + throw new ApplicationRuntimeException( rmte ); + } + catch (Exception e) + { + throw new ApplicationRuntimeException( e ); + } + } + if ( member instanceof Organization ) + { + try + { + Organization organization = (Organization) member; + + //don't move this line! + List flatDataIds = organization.getOrganizationData().getOrganizationTypeIdList(); + + organization.getOrganizationData().save(); + organization.setOrganizationDataKey( member.getOrganizationData().getPrimaryKey() ); + organization.save(); + + Criteria crit = new Criteria(); + crit.add( OrganizationOrganizationTypePeer.ORGANIZATION_DATA_ID, organization.getOrganizationData().getId() ); + List torqueObjects = OrganizationOrganizationTypePeer.doSelect( crit ); + Integer memberDataId = organization.getOrganizationData().getId(); + OrganizationOrganizationType template = new OrganizationOrganizationType(); + PaletteMergeTableProcessor.processPalette( flatDataIds, torqueObjects, memberDataId, template ); + } + catch ( RosterMemberTypeException rmte ) + { + throw new ApplicationRuntimeException( rmte ); + } + catch (Exception e) + { + throw new ApplicationRuntimeException( e ); + } + } + if ( member instanceof Project ) + { + try + { + Project project = (Project) member; + + //don't move this line! + List flatDataIds = project.getProjectData().getProjectTypeIdList(); + + project.getProjectData().save(); + project.setProjectDataKey( member.getProjectData().getPrimaryKey() ); + project.save(); + + Criteria crit = new Criteria(); + crit.add( ProjectProjectTypePeer.PROJECT_DATA_ID, project.getProjectData().getId() ); + List torqueObjects = ProjectProjectTypePeer.doSelect( crit ); + Integer memberDataId = project.getProjectData().getId(); + ProjectProjectType template = new ProjectProjectType(); + PaletteMergeTableProcessor.processPalette( flatDataIds, torqueObjects, memberDataId, template ); + } + catch ( RosterMemberTypeException rmte ) + { + throw new ApplicationRuntimeException( rmte ); + } + catch (Exception e) + { + throw new ApplicationRuntimeException( e ); + } + } + } + + public IPropertySelectionModel buildPersonTypeModel() + { + try + { + EntitySelectionModel personTypeModel = new EntitySelectionModel(); + Criteria crit = new Criteria(); + crit.addAscendingOrderByColumn( PersonTypePeer.PERSON_TYPE ); + LinkedList list = new LinkedList( PersonTypePeer.doSelect( crit ) ); + PersonType personType; + ListIterator looper = list.listIterator( 0 ); + while ( looper.hasNext() ) + { + personType = (PersonType) looper.next(); + personTypeModel.add( personType.getId(), personType.getPersonType() ); + } + return personTypeModel; + } + catch (TorqueException te) { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + } + public IPropertySelectionModel buildProjectTypeModel() + { + try + { + EntitySelectionModel projectTypeModel = new EntitySelectionModel(); + Criteria crit = new Criteria(); + crit.addAscendingOrderByColumn( ProjectTypePeer.PROJECT_TYPE ); + LinkedList list = new LinkedList( ProjectTypePeer.doSelect( crit ) ); + ProjectType projectType; + ListIterator looper = list.listIterator( 0 ); + while ( looper.hasNext() ) + { + projectType = (ProjectType) looper.next(); + projectTypeModel.add( projectType.getId(), projectType.getProjectType() ); + } + return projectTypeModel; + } + catch (TorqueException te) { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + } + public IPropertySelectionModel buildOrganizationTypeModel() + { + try + { + EntitySelectionModel organizationTypeModel = new EntitySelectionModel(); + Criteria crit = new Criteria(); + crit.addAscendingOrderByColumn( OrganizationTypePeer.ORGANIZATION_TYPE ); + LinkedList list = new LinkedList( OrganizationTypePeer.doSelect( crit ) ); + OrganizationType organizationType; + ListIterator looper = list.listIterator( 0 ); + while ( looper.hasNext() ) + { + organizationType = (OrganizationType) looper.next(); + organizationTypeModel.add( organizationType.getId(), organizationType.getOrganizationType() ); + } + return organizationTypeModel; + } + catch (TorqueException te) { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + } + public void detach() + { + setNextPage( "Activities" ); + super.detach(); + } + +//constructors + public MemberData() + { + try + { + if ( !Torque.isInit() ) + { + Global global = (Global) getGlobal(); + Torque.init( global.getTorqueConfig() ); + } + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + setNextPage( "Activities" ); + } + +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/forms/MemberData.page b/src/java/org/thdl/roster/pages/forms/MemberData.page new file mode 100755 index 0000000..468c22f --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/MemberData.page @@ -0,0 +1,92 @@ + + + + + + + Background Information + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + palette + + + + + + + + + + + + + + + palette + + + + + + + + + + + + + + + palette + + + + + + + + + + Continue + continue + + + + + Finish + + finish + + + diff --git a/src/java/org/thdl/roster/pages/forms/MemberFormSeries.java b/src/java/org/thdl/roster/pages/forms/MemberFormSeries.java new file mode 100755 index 0000000..92ee5da --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/MemberFormSeries.java @@ -0,0 +1,141 @@ +package org.thdl.roster.pages.forms; + +import java.util.List; +import java.util.LinkedList; +import org.apache.tapestry.html.BasePage; +import org.apache.tapestry.IRequestCycle; +import org.apache.tapestry.IEngine; + +import org.apache.tapestry.*; +import org.thdl.roster.*; +import org.thdl.roster.om.*; +import org.thdl.roster.pages.*; + +public abstract class MemberFormSeries extends SecureRosterPage +{ +//attributes + private String token; +//accessors + public void setToken(String token) { + this.token = token; + } + public String getToken() { + return token; + } +//helpers +//tapestry listeners + public abstract void processForm( IRequestCycle cycle ); + + public boolean tokensValidate() + { + return true; + } + + public void forward( IRequestCycle cycle ) + { + String warning = null; + String message = null; + if ( tokensValidate() ) + { + processForm( cycle ); + message= "Your " + getPageName() + " data was saved in your profile."; + } + else + { + warning="Invalid reload attempt; your form submission was not processed."; + } + + String newToken = null; + try + { + newToken = TokenMaker.make(); + } + catch ( java.security.NoSuchAlgorithmException nsae ) + { + throw new ApplicationRuntimeException( nsae ); + } + + MemberFormSeries page = (MemberFormSeries)cycle.getPage( getNextPage() ); + page.setToken( newToken ); + Visit visit = (Visit)getVisit(); + visit.setToken( newToken ); + + page.setWarning( warning ); + page.setMessage( message ); + page.validate( cycle ); + cycle.activate( page ); + } + + public void finish( IRequestCycle cycle ) + { + Visit visit = (Visit)getVisit(); + Member member = (Member) visit.getMember(); + Global global = (Global) getGlobal(); + + if ( tokensValidate() ) + { + processForm( cycle ); + } + + visit.setToken( null ); + + MemberPage page = null; + if ( member instanceof Person ) + { + page = (MemberPage)cycle.getPage( "Person" ); + global.setAllPeople( global.refreshPeople() ); + } + else if ( member instanceof Project ) + { + page = (MemberPage)cycle.getPage( "Project" ); + global.setAllProjects( global.refreshProjects() ); + } + else if ( member instanceof Organization ) + { + page = (MemberPage)cycle.getPage( "Organization" ); + global.setAllOrganizations( global.refreshOrganizations() ); + } + global.setRepresentedCountries( global.refreshRepresentedCountries() ); + page.setMember( member ); + cycle.activate( page ); + } + + public void validate(IRequestCycle cycle) + { + Visit visit = (Visit) getVisit(); + Member member = (Member)visit.getMember(); + if ( null == member ) + { + RosterPage home = (RosterPage) cycle.getPage( "Home" ); + home.setWarning( "There was no Roster Member in your session. This is possibly due to navigating to an edit screen after your session had timed out." ); + throw new PageRedirectException( home ); + } + + super.validate( cycle ); + + if ( ! member.isNew() ) + { + Integer owner = member.getCreatedBy(); + Integer user = new Integer( visit.getThdlUser().getId() ); + if ( ! owner.equals( user ) ) + { + RosterPage home = (RosterPage) cycle.getPage( "Home" ); + home.setWarning( "You are not logged in as the owner of this entry." ); + throw new PageRedirectException( home ); + } + } + } +//synthetic accessors + +//constructors + public MemberFormSeries() + { + super(); + /* List list = java.util.Collections.synchronizedList( new LinkedList() ); + setForward( list ); + getForward().add( "Contact" ); + getForward().add( "Background" ); + getForward().add( "Research" ); + getForward().add( "Publications" ); */ + } +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/forms/Publications.html b/src/java/org/thdl/roster/pages/forms/Publications.html new file mode 100755 index 0000000..c71b70a --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/Publications.html @@ -0,0 +1 @@ +

    Here you can share information about your work. You may upload more detailed documents about your work on the next page but if you do so, please refer people to the appropriate files on this page.

    Formal Products/Publications: This might be recordings for a musician, art, a technique for making cement blocks, a computer program or any other product or publication.

    Works in Progress:

    Projects:

    \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/forms/Publications.page b/src/java/org/thdl/roster/pages/forms/Publications.page new file mode 100755 index 0000000..04cbac9 --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/Publications.page @@ -0,0 +1,51 @@ + + + + + + + Works: Products, Publications, Projects + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Continue + continue + + + + + Finish + + finish + + + diff --git a/src/java/org/thdl/roster/pages/forms/PublicationsPage.java b/src/java/org/thdl/roster/pages/forms/PublicationsPage.java new file mode 100755 index 0000000..ddaa2b1 --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/PublicationsPage.java @@ -0,0 +1,74 @@ +package org.thdl.roster.pages.forms; + +import java.io.*; +import java.util.*; + +import org.thdl.roster.*; +import org.thdl.roster.om.*; +import org.thdl.roster.pages.*; + +import org.apache.tapestry.ApplicationRuntimeException; +import org.apache.tapestry.IRequestCycle; +import org.apache.tapestry.IPage; +import org.apache.tapestry.request.IUploadFile; +import org.apache.tapestry.form.IPropertySelectionModel; + +import org.apache.commons.lang.exception.NestableException; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.util.Criteria; + +/** + * Description of the Class + * + *@author travis + *@created March 11, 2003 + */ +public class PublicationsPage extends MemberFormSeries { + + /** + * Description of the Method + * + *@param cycle Description of the Parameter + */ + public void processForm(IRequestCycle cycle) + { + Visit visit = (Visit) getVisit(); + Member member = (Member) visit.getMember(); + try + { + member.getPublication().save(); + member.setPublicationKey( member.getPublication().getPrimaryKey() ); + member.save(); + } + catch (Exception e) + { + throw new ApplicationRuntimeException( e ); + } + } + + public void detach() + { + setNextPage( "Uploads" ); + super.detach(); + } + + public PublicationsPage() + { + try + { + if ( !Torque.isInit() ) + { + Global global = (Global) getGlobal(); + Torque.init( global.getTorqueConfig() ); + } + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + setNextPage( "Uploads" ); + } +} + diff --git a/src/java/org/thdl/roster/pages/forms/ResearchInterests.html b/src/java/org/thdl/roster/pages/forms/ResearchInterests.html new file mode 100755 index 0000000..f9167a2 --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/ResearchInterests.html @@ -0,0 +1 @@ +

    Use this area to describe your current activities, research or other work. If your work is historical, then you can enter the centuries you focus on.

    Fields

    Languages Used century to the
    Research Interests: "Research" should be understood loosely to signify any thing you are seriously investigating, and by no means is limited to academic research

    Collaboration Interests:

    \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/forms/ResearchInterests.page b/src/java/org/thdl/roster/pages/forms/ResearchInterests.page new file mode 100755 index 0000000..69c79a0 --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/ResearchInterests.page @@ -0,0 +1,82 @@ + + + + + + + Activities and Research + + + + + + + + + + + + + + + + palette + + + + + + + palette + + + + + + + palette + + + + + + + + + + + + + + + + + + + + + + + + + + + Continue + continue + + + + + Finish + + finish + + + + + + + + diff --git a/src/java/org/thdl/roster/pages/forms/ResearchInterestsPage.java b/src/java/org/thdl/roster/pages/forms/ResearchInterestsPage.java new file mode 100755 index 0000000..3c79aeb --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/ResearchInterestsPage.java @@ -0,0 +1,308 @@ +package org.thdl.roster.pages.forms; + +import java.util.*; +import org.thdl.roster.*; +import org.thdl.roster.om.*; +import org.thdl.roster.pages.*; +import org.apache.tapestry.ApplicationRuntimeException; +import org.apache.tapestry.IRequestCycle; +import org.apache.tapestry.form.IPropertySelectionModel; +import org.apache.commons.lang.exception.NestableException; +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.util.Criteria; + +/** + * Description of the Class + * + *@author travis + *@created March 11, 2003 + */ +public class ResearchInterestsPage extends MemberFormSeries +{ + + private IPropertySelectionModel disciplineModel; + private IPropertySelectionModel culturalAreaModel; + private IPropertySelectionModel languageModel; + private IPropertySelectionModel centuries; + + + /** + * Sets the centuries attribute of the ResearchInterestsPage object + * + *@param centuries The new centuries value + */ + public void setCenturies( IPropertySelectionModel centuries ) + { + this.centuries = centuries; + } + + + /** + * Gets the centuries attribute of the ResearchInterestsPage object + * + *@return The centuries value + */ + public IPropertySelectionModel getCenturies() + { + if ( null == centuries ) + { + setCenturies( buildCenturiesModel() ); + } + return centuries; + } + + + /** + * Sets the disciplineModel attribute of the ResearchInterestsPage object + * + *@param disciplineModel The new disciplineModel value + */ + public void setDisciplineModel( IPropertySelectionModel disciplineModel ) + { + this.disciplineModel = disciplineModel; + } + + + /** + * Gets the disciplineModel attribute of the ResearchInterestsPage object + * + *@return The disciplineModel value + */ + public IPropertySelectionModel getDisciplineModel() + { + if ( disciplineModel == null ) + { + setDisciplineModel( buildDisciplineModel() ); + } + return disciplineModel; + } + + /** + * Sets the culturalAreaModel attribute of the ResearchInterestsPage object + * + *@param culturalAreaModel The new culturalAreaModel value + */ + public void setCulturalAreaModel( IPropertySelectionModel culturalAreaModel ) + { + this.culturalAreaModel = culturalAreaModel; + } + + + /** + * Gets the culturalAreaModel attribute of the ResearchInterestsPage object + * + *@return The culturalAreaModel value + */ + public IPropertySelectionModel getCulturalAreaModel() + { + if ( culturalAreaModel == null ) + { + setCulturalAreaModel( buildCulturalAreaModel() ); + } + return culturalAreaModel; + } + + /** + * Sets the languageModel attribute of the ResearchInterestsPage object + * + *@param languageModel The new languageModel value + */ + public void setLanguageModel( IPropertySelectionModel languageModel ) + { + this.languageModel = languageModel; + } + + + /** + * Gets the languageModel attribute of the ResearchInterestsPage object + * + *@return The languageModel value + */ + public IPropertySelectionModel getLanguageModel() + { + if ( languageModel == null ) + { + setLanguageModel( buildLanguageModel() ); + } + return languageModel; + } + + /** + * Description of the Method + * + *@return Description of the Return Value + */ + public IPropertySelectionModel buildDisciplineModel() + { + LinkedList list; + try + { + Criteria crit = new Criteria(); + crit.addAscendingOrderByColumn( DisciplinePeer.DISCIPLINE ); + list = new LinkedList( BaseDisciplinePeer.doSelect( crit ) ); + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + EntitySelectionModel disciplineModel = new EntitySelectionModel(); + ListIterator looper = list.listIterator( 0 ); + while ( looper.hasNext() ) + { + Discipline discipline = (Discipline) looper.next(); + disciplineModel.add( discipline.getId(), discipline.getDiscipline() ); + } + return disciplineModel; + } + + + /** + * Description of the Method + * + *@return Description of the Return Value + */ + public IPropertySelectionModel buildCulturalAreaModel() + { + LinkedList list; + try + { + Criteria crit = new Criteria(); + crit.addAscendingOrderByColumn( CulturalAreaPeer.CULTURAL_AREA ); + list = new LinkedList( BaseCulturalAreaPeer.doSelect( crit ) ); + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + EntitySelectionModel culturalAreaModel = new EntitySelectionModel(); + ListIterator looper = list.listIterator( 0 ); + while ( looper.hasNext() ) + { + CulturalArea culturalArea = (CulturalArea) looper.next(); + culturalAreaModel.add( culturalArea.getId(), culturalArea.getCulturalArea() ); + } + return culturalAreaModel; + } + + + /** + * Description of the Method + * + *@return Description of the Return Value + */ + public IPropertySelectionModel buildLanguageModel() + { + LinkedList list; + try + { + Criteria crit = new Criteria(); + crit.addAscendingOrderByColumn( LanguagePeer.LANGUAGE ); + list = new LinkedList( BaseLanguagePeer.doSelect( crit ) ); + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + EntitySelectionModel languageModel = new EntitySelectionModel(); + ListIterator looper = list.listIterator( 0 ); + while ( looper.hasNext() ) + { + Language language = (Language) looper.next(); + languageModel.add( language.getId(), language.getLanguage() ); + } + return languageModel; + } + + /** + * Description of the Method + * + *@return Description of the Return Value + */ + public IPropertySelectionModel buildCenturiesModel() + { + EntitySelectionModel centuriesModel = new EntitySelectionModel(); + String centuries[] = { "","twenty-first", "twentieth", "nineteenth", "eighteenth", "seventeenth", "sixteenth", "fifteenth", "fourteenth", "thirteenth", "twelfth", "eleventh", "tenth", "ninth", "eighth", "seventh", "pre-seventh" }; + int centIntegers[] = { -1, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 0 }; + for ( int i = 0; i < centuries.length; i++ ) + { + centuriesModel.add( new Integer( centIntegers[i] ), centuries[i] ); + } + return centuriesModel; + } + + /** + * This is the form listener that saves the + * + *@param cycle Description of the Parameter + */ + public void processForm( IRequestCycle cycle ) + { + Visit visit = (Visit) getVisit(); + Member member = (Member) visit.getMember(); + try + { + List disciplineIds = member.getResearchInterest().getDisciplineIdList(); + List languageIds = member.getResearchInterest().getLanguageIdList(); + List cultAreaIds = member.getResearchInterest().getCulturalAreaIdList(); + + member.getResearchInterest().save(); + member.setResearchInterestKey( member.getResearchInterest().getPrimaryKey() ); + member.save(); + + Criteria crit; + List torqueObjects; + Integer foreignKey2; + + crit = new Criteria(); + crit.add( ResearchInterestDisciplinePeer.RESEARCH_INTEREST_ID, member.getResearchInterest().getId() ); + torqueObjects = ResearchInterestDisciplinePeer.doSelect( crit ); + foreignKey2 = member.getResearchInterest().getId(); + ResearchInterestDiscipline template = new ResearchInterestDiscipline(); + PaletteMergeTableProcessor.processPalette( disciplineIds, torqueObjects, foreignKey2, template ); + + crit = new Criteria(); + crit.add( ResearchInterestLanguagePeer.RESEARCH_INTEREST_ID, member.getResearchInterest().getId() ); + torqueObjects = ResearchInterestLanguagePeer.doSelect( crit ); + foreignKey2 = member.getResearchInterest().getId(); + ResearchInterestLanguage template2 = new ResearchInterestLanguage(); + PaletteMergeTableProcessor.processPalette( languageIds, torqueObjects, foreignKey2, template2 ); + + crit = new Criteria(); + crit.add( ResearchInterestCulturalAreaPeer.RESEARCH_INTEREST_ID, member.getResearchInterest().getId() ); + torqueObjects = ResearchInterestCulturalAreaPeer.doSelect( crit ); + foreignKey2 = member.getResearchInterest().getId(); + ResearchInterestCulturalArea template3 = new ResearchInterestCulturalArea(); + PaletteMergeTableProcessor.processPalette( cultAreaIds, torqueObjects, foreignKey2, template3 ); + } + catch (Exception e) + { + throw new ApplicationRuntimeException( e.getMessage(), e ); + } + } + + public void detach() + { + setNextPage( "Works" ); + super.detach(); + } + + /** Constructor for the ResearchInterestsPage object */ + public ResearchInterestsPage() + { + try + { + if ( !Torque.isInit() ) + { + Global global = (Global) getGlobal(); + Torque.init( global.getTorqueConfig() ); + } + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + setNextPage( "Works" ); + } +} + diff --git a/src/java/org/thdl/roster/pages/forms/RosterValidationDelegate.java b/src/java/org/thdl/roster/pages/forms/RosterValidationDelegate.java new file mode 100755 index 0000000..e92627f --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/RosterValidationDelegate.java @@ -0,0 +1,101 @@ +package org.thdl.roster.pages.forms; + + + +import org.apache.tapestry.IMarkupWriter; + +import org.apache.tapestry.IRequestCycle; + + + +import org.apache.tapestry.form.IFormComponent; + +import org.apache.tapestry.valid.ValidationDelegate; + + + +/** + + * + + * @author Howard Lewis Ship + + * @version $Id: RosterValidationDelegate.java,v 1.1 2004/01/07 15:32:42 travismccauley Exp $ + + * @since 1.0.6 + + * + + **/ + + + +public class RosterValidationDelegate extends ValidationDelegate + +{ + + public void writeAttributes(IMarkupWriter writer, IRequestCycle cycle) + + { + + if (isInError()) + + writer.attribute("class", "field-error"); + + } + + + + public void writeSuffix(IMarkupWriter writer, IRequestCycle cycle) + + { + + if (isInError()) + + { + + writer.print(" "); + + writer.beginEmpty("img"); + + writer.attribute("src", "images/workbench/Warning-small.gif"); + + writer.attribute("height", 20); + + writer.attribute("width", 20); + + } + + } + + + + public void writeLabelPrefix(IFormComponent component, IMarkupWriter writer, IRequestCycle cycle) + + { + + if (isInError(component)) + + { + + writer.begin("span"); + + writer.attribute("class", "label-error"); + + } + + } + + + + public void writeLabelSuffix(IFormComponent component, IMarkupWriter writer, IRequestCycle cycle) + + { + + if (isInError(component)) + + writer.end(); // + + } + +} \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/forms/SecureRosterPage.java b/src/java/org/thdl/roster/pages/forms/SecureRosterPage.java new file mode 100755 index 0000000..620ce98 --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/SecureRosterPage.java @@ -0,0 +1,42 @@ +package org.thdl.roster.pages.forms; + +import org.apache.tapestry.*; +import org.thdl.roster.*; +import org.thdl.roster.om.*; +import org.thdl.roster.pages.*; +import org.apache.torque.*; + +public abstract class SecureRosterPage extends RosterPage +{ + /* DO NOT DELETE: THIS IS A HANDY TESTING HACK TO SEE SOME OF THE OBJECTS IN VISIT + public String getMessage() + { + Visit visit = (Visit)getVisit(); + String snapshot=null; + try { + snapshot = visit.getSnapshot(); + } + catch (TorqueException te ) + { + throw new ApplicationRuntimeException( te ); + } + return snapshot; + } */ + + public void validate(IRequestCycle cycle) + { + Visit visit = (Visit) getVisit(); + if ( ! visit.isAuthenticated() ) + { + IPage page = cycle.getPage( "Login" ); + Login loginPage = (Login)page; + loginPage.setForward( getPageName() ); + throw new PageRedirectException( loginPage ); + } + super.validate( cycle ); + } + public SecureRosterPage() + { + super(); + } +} diff --git a/src/java/org/thdl/roster/pages/forms/SortModeStrings.properties b/src/java/org/thdl/roster/pages/forms/SortModeStrings.properties new file mode 100755 index 0000000..80f5b7e --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/SortModeStrings.properties @@ -0,0 +1 @@ +# $Id: SortModeStrings.properties,v 1.1 2004/01/07 15:32:42 travismccauley Exp $ NONE=None LABEL=Label VALUE=Value USER=Manual \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/forms/Uploads.html b/src/java/org/thdl/roster/pages/forms/Uploads.html new file mode 100755 index 0000000..be0b7c4 --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/Uploads.html @@ -0,0 +1 @@ +

    You can use this area to share documents such as your CV, promotional literature, application forms, or any other documents pertaining to your work. We hope this service will also encourage collaboration. One use for this space is as a venue for provisional materials or unfinished work that you think might be an arena for collaboration.

    Upload a New File

    Document type:

    Currently accepted file types are: gif, jpeg, html, plain text, PDF files, RTF files, Word documents, Powerpoint, and zip files

    Delete an Old File

    \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/forms/Uploads.java b/src/java/org/thdl/roster/pages/forms/Uploads.java new file mode 100755 index 0000000..e530d54 --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/Uploads.java @@ -0,0 +1,329 @@ +package org.thdl.roster.pages.forms; + +import java.io.*; +import java.util.*; + +import org.thdl.roster.*; +import org.thdl.roster.om.*; +import org.thdl.roster.pages.*; + +import org.apache.tapestry.*; +import org.apache.tapestry.request.IUploadFile; +import org.apache.tapestry.form.IPropertySelectionModel; + +import org.apache.commons.lang.exception.NestableException; + +import org.apache.torque.Torque; +import org.apache.torque.TorqueException; +import org.apache.torque.util.Criteria; + +/** + * Description of the Class + * + *@author travis + *@created March 11, 2003 + */ +public class Uploads extends MemberFormSeries { +//attributes + private static final String[] ACCEPTED_MIME_TYPES = { "image/gif", "image/jpeg", "text/html", "text/plain", "application/pdf", "application/rtf", "application/msword", "application/vnd.ms-powerpoint", "application/zip", "application/x-zip-compressed" }; + private Document document; + private IUploadFile file; + private Integer documentType; + private IPropertySelectionModel documentTypeModel; +//accessors + public void setDocument(Document document) { + this.document = document; + } + public Document getDocument() { + return document; + } + public void setFile(IUploadFile file) { + this.file = file; + } + public IUploadFile getFile() { + return file; + } + public void setDocumentType(Integer documentType) { + this.documentType = documentType; + } + public Integer getDocumentType() { + return documentType; + } + public void setDocumentTypeModel(IPropertySelectionModel documentTypeModel) { + this.documentTypeModel = documentTypeModel; + } + public IPropertySelectionModel getDocumentTypeModel() { + if (null== documentTypeModel) + { + setDocumentTypeModel( buildDocumentTypeModel() ); + } + return documentTypeModel; + } +//helpers + public IPropertySelectionModel buildDocumentTypeModel() { + LinkedList list; + try { + Criteria crit = new Criteria(); + crit.addAscendingOrderByColumn( DocumentTypePeer.DOCUMENT_TYPE ); + list = new LinkedList(BaseDocumentTypePeer.doSelect(crit)); + } catch (TorqueException te) { + throw new ApplicationRuntimeException("Torque Exception says: " + te.getMessage(), te); + } + EntitySelectionModel documentTypeModel = new EntitySelectionModel(); + ListIterator looper = list.listIterator(0); + while ( looper.hasNext() ) { + DocumentType documentType = (DocumentType) looper.next(); + documentTypeModel.add(documentType.getId(), documentType.getDocumentType()); + } + return documentTypeModel; + } + + /** + * Description of the Method + * + *@param cycle Description of the Parameter + */ + public void processForm(IRequestCycle cycle) + { + Visit visit = (Visit) getVisit(); + Member member = (Member) visit.getMember(); + processFile( cycle, member ); + try + { + member.save(); + } + catch (Exception e) + { + throw new ApplicationRuntimeException( e ); + } + } + + public boolean mimeTypeOk() + { + boolean pass = false; + for (int index = 0; index < ACCEPTED_MIME_TYPES.length; index++) + { + if ( getFile().getContentType().equals( ACCEPTED_MIME_TYPES[ index ] ) ) + { + pass = true; + } + } + return pass; + } + + public boolean tokensValidate() + { + Visit visit = (Visit) getVisit(); + String visitToken = visit.getToken(); + String pageToken = getToken(); + + boolean validTokens = false; + if ( null != visitToken && null != pageToken && visitToken.equals( pageToken ) ) + { + validTokens = true; + } + return validTokens; + } + + public void processFile( IRequestCycle cycle, Member member ) + { + String filename = null; + int streamLength = 0; + + try + { + streamLength = getFile().getStream().available() ; + } + catch (IOException ioe ) + { + throw new ApplicationRuntimeException( ioe ); + } + + Document doc = null; + + if ( streamLength < 8 ) + { + return; + } + else if ( ! mimeTypeOk() ) + { + RosterPage page = (RosterPage)cycle.getPage( "Uploads" ); + page.setWarning( "Invalid File Type: " + getFile().getContentType() ); + page.validate( cycle ); + throw new PageRedirectException( page ); + } + else + { + StringTokenizer st = new StringTokenizer( getFile().getFileName(), "\\" ); + while ( st.hasMoreTokens() ) + { + filename = st.nextToken(); + } + + try + { + doc = new Document(); + doc.setMemberId( member.getId() ); + doc.setFilename( filename ); + doc.setContentType( getFile().getContentType() ); + doc.setPath( "/roster/uploads/" ); + doc.setDocumentTypeId( getDocumentType() ); + doc.save(); + member.addDocument( doc ); + } + catch (Exception e) + { + throw new ApplicationRuntimeException( e ); + } + } + + InputStream fis = getFile().getStream(); + FileOutputStream fos = null; + + String absolutePath = cycle.getRequestContext().getServlet().getInitParameter( "roster-uploads-directory" ); + File aFile = new File( absolutePath + filename ); + int uniqueifier = 1; + + while ( aFile.exists() ) + { + uniqueifier++; + StringTokenizer filenameTokens = new StringTokenizer( filename, ".", true ); + StringBuffer newFilename = new StringBuffer(); + while ( filenameTokens.hasMoreTokens() ) + { + String tok = filenameTokens.nextToken(); + if ( tok.equals( "." ) ) + { + newFilename.append( uniqueifier ); + } + newFilename.append( tok ); + } + aFile = new File( absolutePath + newFilename.toString() ); + doc.setFilename( newFilename.toString() ); + } + + try + { + fos = new FileOutputStream( aFile ); + } + catch (IOException ioe) + { + throw new ApplicationRuntimeException( ioe ); + } + + try + { + byte[] buffer = new byte[1024]; + while ( true ) + { + int length = fis.read( buffer ); + if (length < 0) + { + break; + } + fos.write(buffer, 0, length); + } + fis.close(); + fos.close(); + } + catch (IOException ioe) + { + throw new ApplicationRuntimeException( ioe ); + } + finally + { + if (fis != null) + { + try + { + fis.close(); + } + catch (IOException ioe) + { + throw new ApplicationRuntimeException( ioe ); + } + } + if (fos != null) + { + try + { + fos.close(); + } + catch (IOException ioe) + { + throw new ApplicationRuntimeException( ioe ); + } + } + } + } + + public void deleteFile( IRequestCycle cycle ) + { + Integer docId = (Integer) cycle.getServiceParameters()[0]; + Document doc = null; + try + { + doc = DocumentPeer.retrieveByPK( docId ); + } + catch (TorqueException te ) + { + throw new ApplicationRuntimeException( te.getMessage(), te ); + } + + + File file = null; + String warning = null; + String message = null; + if (null != doc) + { + String absolutePath = cycle.getRequestContext().getServlet().getInitParameter( "roster-uploads-directory" ); + file = new File( absolutePath + doc.getFilename() ); + file.delete(); + message = "Your document, " + doc.getFilename() + ", was deleted."; + try + { + DocumentPeer.doDelete( doc ); + } + catch (TorqueException te ) + { + throw new ApplicationRuntimeException( te.getMessage(), te ); + } + } + + try + { + Visit visit = (Visit) getVisit(); + Member member = (Member)visit.getMember(); + member.getDocuments( new Criteria() ); + } + catch (Exception te ) + { + throw new ApplicationRuntimeException( te.getMessage(), te ); + } + } + + + public void detach() + { + setNextPage( "Home" ); + super.detach(); + } + + public Uploads() + { + try + { + if ( !Torque.isInit() ) + { + Global global = (Global) getGlobal(); + Torque.init( global.getTorqueConfig() ); + } + } + catch ( TorqueException te ) + { + throw new ApplicationRuntimeException( "Torque Exception says: " + te.getMessage(), te ); + } + setNextPage( "Home" ); + } +} + diff --git a/src/java/org/thdl/roster/pages/forms/Uploads.page b/src/java/org/thdl/roster/pages/forms/Uploads.page new file mode 100755 index 0000000..2398be1 --- /dev/null +++ b/src/java/org/thdl/roster/pages/forms/Uploads.page @@ -0,0 +1,83 @@ + + + + + + + Uploads + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + continue + display: none; + + + + + Upload + + moreUploads + + + + + Finish + + finish + + + + + + li + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/pages/test/Test.html b/src/java/org/thdl/roster/pages/test/Test.html new file mode 100755 index 0000000..ed0aed1 --- /dev/null +++ b/src/java/org/thdl/roster/pages/test/Test.html @@ -0,0 +1 @@ +

    click to test validate and redirect method in testPage2

    reset member and view in page2

    Here is theSelected's address: ''


    \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/test/Test.page b/src/java/org/thdl/roster/pages/test/Test.page new file mode 100755 index 0000000..9d3cdb9 --- /dev/null +++ b/src/java/org/thdl/roster/pages/test/Test.page @@ -0,0 +1,61 @@ + + + + + + + Test Page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/thdl/roster/pages/test/Test2.html b/src/java/org/thdl/roster/pages/test/Test2.html new file mode 100755 index 0000000..8fba212 --- /dev/null +++ b/src/java/org/thdl/roster/pages/test/Test2.html @@ -0,0 +1 @@ +

    Member: ''

    \ No newline at end of file diff --git a/src/java/org/thdl/roster/pages/test/Test2.page b/src/java/org/thdl/roster/pages/test/Test2.page new file mode 100755 index 0000000..0dfe978 --- /dev/null +++ b/src/java/org/thdl/roster/pages/test/Test2.page @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/src/java/org/thdl/roster/pages/test/TestPage.java b/src/java/org/thdl/roster/pages/test/TestPage.java new file mode 100755 index 0000000..a152f20 --- /dev/null +++ b/src/java/org/thdl/roster/pages/test/TestPage.java @@ -0,0 +1,114 @@ +package org.thdl.roster.pages.test; + +import org.thdl.roster.*; +import org.thdl.roster.om.*; +import org.thdl.roster.pages.*; +import org.thdl.roster.pages.test.*; +import org.apache.tapestry.*; +import org.apache.tapestry.html.*; +import java.util.*; +import org.apache.tapestry.request.IUploadFile; + +public class TestPage extends org.thdl.roster.pages.RosterPage //org.apache.tapestry.html.BasePage +{ + private static final String[] ACCEPTED_MIME_TYPES = { "image/gif", "image/jpeg", "text/html", "text/plain", "application/pdf", "application/rtf", "application/msword", "application/vnd.ms-powerpoint", "application/zip", "application/x-zip-compressed" }; + + private List theSelected; + private List theSelected2; + private List theSelected3; + + private IUploadFile theFile; + private String token; + private String[] tokens; +public void setTokens(String[] tokens) { + this.tokens = tokens; +} +public String[] getTokens() { + return tokens; +} +public void setTheFile(IUploadFile theFile) { + this.theFile = theFile; +} +public void setToken(String token) { + this.token = token; +} +public IUploadFile getTheFile() { + return theFile; +} +public String getToken() { + return token; +} + + +public void processFile(IRequestCycle cycle) +{ + StringTokenizer toks = new StringTokenizer( getTheFile().getFileName(), "\\" ); + String[] sa = new String[ toks.countTokens() ]; + int i=0; + int count = toks.countTokens(); + while (toks.hasMoreTokens()) + { + sa[ i ]= i +" " +toks.nextToken(); + if ( i == count-1 ) setMessage( "Filename: " + sa[ i ] ); + i++; + } + setTokens( sa ); + setWarning( "mime type: " + getTheFile().getContentType() ); +} + + + public void setTheSelected(List theSelected) { + if (null == theSelected) throw new ApplicationRuntimeException( "null theSelected" ); + this.theSelected = theSelected; + } + public List getTheSelected() { + return theSelected; + } + public void setTheSelected3(List theSelected3) { + this.theSelected3 = theSelected3; + } + public void setTheSelected2(List theSelected2) { + this.theSelected2 = theSelected2; + } + public List getTheSelected3() { + return theSelected3; + } + public List getTheSelected2() { + return theSelected2; + } + + public void processForm( IRequestCycle cycle ) + { + getEngine().setVisit( null ); + + Visit visit = (Visit)getVisit(); + String s = "Sponge Bob"; + visit.setTest( s ); + cycle.activate( "Test2" ); + } + public void testValidate( IRequestCycle cycle ) + { + RosterPage page = (RosterPage)cycle.getPage( "Test2" ); + page.validate( cycle ); + cycle.activate( page ); + } + + public EntitySelectionModel getTestModel() + { + EntitySelectionModel model = new EntitySelectionModel(); + model.add( new Integer( 1 ), "1 Little Indian" ); + model.add( new Integer( 2 ), "2 Little Indians" ); + model.add( new Integer( 3 ), "3 Little Indians" ); + model.add( new Integer( 4 ), "4 Little Indians" ); + return model; + } + public void processPalette( IRequestCycle cycle ) + { + cycle.activate( "Admin" ); + } + + public TestPage() + { + super(); + } +} diff --git a/src/java/org/thdl/roster/pages/test/TestPage2.java b/src/java/org/thdl/roster/pages/test/TestPage2.java new file mode 100755 index 0000000..bfe8f2c --- /dev/null +++ b/src/java/org/thdl/roster/pages/test/TestPage2.java @@ -0,0 +1,71 @@ +package org.thdl.roster.pages.test; + +import org.thdl.roster.*; +import org.thdl.roster.om.*; +import org.thdl.roster.pages.*; +import org.thdl.roster.pages.test.*; +import org.apache.tapestry.*; +import org.apache.tapestry.html.*; +import java.util.List; + +public class TestPage2 extends org.thdl.roster.pages.RosterPage //org.apache.tapestry.html.BasePage +{ + private List theSelected; + private List theSelected2; + private List theSelected3; + + public void setTheSelected(List theSelected) { + if (null == theSelected) throw new ApplicationRuntimeException( "null theSelected" ); + this.theSelected = theSelected; + } + public List getTheSelected() { + return theSelected; + } + public void setTheSelected3(List theSelected3) { + this.theSelected3 = theSelected3; + } + public void setTheSelected2(List theSelected2) { + this.theSelected2 = theSelected2; + } + public List getTheSelected3() { + return theSelected3; + } + public List getTheSelected2() { + return theSelected2; + } + + public void validate(IRequestCycle cycle) + { + RosterPage home = (RosterPage) cycle.getPage( "Home" ); + home.setWarning( "There was no Roster Member in your session. This is possibly due to navigating to an edit screen after your session had timed out." ); + throw new PageRedirectException( home ); + } + public void processForm( IRequestCycle cycle ) + { + getEngine().setVisit( null ); + + Visit visit = (Visit)getVisit(); + String s = "Sponge Bob"; + visit.setTest( s ); + cycle.activate( "Test2" ); + } + + public EntitySelectionModel getTestModel() + { + EntitySelectionModel model = new EntitySelectionModel(); + model.add( new Integer( 1 ), "1 Little Indian" ); + model.add( new Integer( 2 ), "2 Little Indians" ); + model.add( new Integer( 3 ), "3 Little Indians" ); + model.add( new Integer( 4 ), "4 Little Indians" ); + return model; + } + public void processPalette( IRequestCycle cycle ) + { + cycle.activate( "Admin" ); + } + + public TestPage2() + { + super(); + } +} diff --git a/src/java/org/thdl/roster/velocity.log b/src/java/org/thdl/roster/velocity.log new file mode 100755 index 0000000..46d2dff --- /dev/null +++ b/src/java/org/thdl/roster/velocity.log @@ -0,0 +1,236 @@ +2003-02-27 15:11:04,008 - SimpleLog4JLogSystem initialized using logfile 'velocity.log' +2003-02-27 15:11:04,011 - ************************************************************** +2003-02-27 15:11:04,011 - Starting Jakarta Velocity v1.3 +2003-02-27 15:11:04,012 - RuntimeInstance initializing. +2003-02-27 15:11:04,012 - Default Properties File: org/apache/velocity/runtime/defaults/velocity.properties +2003-02-27 15:11:04,012 - Trying to use logger class org.apache.velocity.runtime.log.AvalonLogSystem +2003-02-27 15:11:04,015 - Couldn't find class org.apache.velocity.runtime.log.AvalonLogSystem or necessary supporting classes in classpath. Exception : java.lang.NoClassDefFoundError: org/apache/log/format/Formatter +2003-02-27 15:11:04,015 - Trying to use logger class org.apache.velocity.runtime.log.SimpleLog4JLogSystem +2003-02-27 15:11:04,015 - Using logger class org.apache.velocity.runtime.log.SimpleLog4JLogSystem +2003-02-27 15:11:04,036 - Default ResourceManager initializing. (class org.apache.velocity.runtime.resource.ResourceManagerImpl) +2003-02-27 15:11:04,059 - Resource Loader Instantiated: org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:04,060 - FileResourceLoader : initialization starting. +2003-02-27 15:11:04,061 - FileResourceLoader : adding path '/Users/travis/torque-3.0/templates' +2003-02-27 15:11:04,062 - FileResourceLoader : initialization complete. +2003-02-27 15:11:04,073 - ResourceCache : initialized. (class org.apache.velocity.runtime.resource.ResourceCacheImpl) +2003-02-27 15:11:04,078 - Default ResourceManager initialization complete. +2003-02-27 15:11:04,089 - Loaded System Directive: org.apache.velocity.runtime.directive.Literal +2003-02-27 15:11:04,098 - Loaded System Directive: org.apache.velocity.runtime.directive.Macro +2003-02-27 15:11:04,109 - Loaded System Directive: org.apache.velocity.runtime.directive.Parse +2003-02-27 15:11:04,123 - Loaded System Directive: org.apache.velocity.runtime.directive.Include +2003-02-27 15:11:04,134 - Loaded System Directive: org.apache.velocity.runtime.directive.Foreach +2003-02-27 15:11:04,799 - Created: 20 parsers. +2003-02-27 15:11:04,800 - Velocimacro : initialization starting. +2003-02-27 15:11:04,800 - Velocimacro : adding VMs from VM library template : VM_global_library.vm +2003-02-27 15:11:04,814 - ResourceManager : unable to find resource 'VM_global_library.vm' in any resource loader. +2003-02-27 15:11:04,814 - Velocimacro : error using VM library template VM_global_library.vm : org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'VM_global_library.vm' +2003-02-27 15:11:04,815 - Velocimacro : VM library template macro registration complete. +2003-02-27 15:11:04,815 - Velocimacro : allowInline = true : VMs can be defined inline in templates +2003-02-27 15:11:04,816 - Velocimacro : allowInlineToOverride = false : VMs defined inline may NOT replace previous VM definitions +2003-02-27 15:11:04,816 - Velocimacro : allowInlineLocal = false : VMs defined inline will be global in scope if allowed. +2003-02-27 15:11:04,816 - Velocimacro : messages on : VM system will output logging messages +2003-02-27 15:11:04,817 - Velocimacro : autoload off : VM system will not automatically reload global library macros +2003-02-27 15:11:04,817 - Velocimacro : initialization complete. +2003-02-27 15:11:04,818 - Velocity successfully started. +2003-02-27 15:11:06,045 - ResourceManager : found om/Control.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:06,982 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:07,353 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:07,356 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:07,827 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:07,943 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:07,950 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:07,961 - ResourceManager : found om/MultiExtendObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:07,970 - ResourceManager : found om/MultiExtendObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:07,979 - ResourceManager : found om/MultiExtendObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:08,268 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:08,331 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:08,333 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:09,076 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:09,186 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:09,193 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:09,414 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:09,468 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:09,484 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:09,841 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:09,920 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:09,928 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:10,463 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:10,511 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:10,513 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:10,811 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:10,917 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:10,924 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:11,108 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:11,174 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:11,176 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:11,472 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:11,522 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:11,531 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:12,080 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:12,144 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:12,146 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:12,411 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:12,453 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:12,459 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:12,659 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:12,694 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:12,696 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:12,958 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:13,373 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:13,379 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:13,548 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:13,583 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:13,585 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:13,845 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:13,921 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:13,928 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:14,105 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:14,161 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:14,163 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:14,432 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:14,821 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:14,827 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:14,997 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:15,035 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:15,037 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:15,300 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:15,393 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:15,399 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:15,744 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:15,776 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:15,778 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:16,036 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:16,062 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:16,067 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:16,253 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:16,305 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:16,307 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:16,907 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:16,937 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:16,943 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:17,124 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:17,191 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:17,193 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:17,462 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:17,487 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:17,493 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:17,669 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:17,702 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:17,705 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:18,353 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:18,379 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:18,385 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:18,590 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:18,624 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:18,626 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:18,890 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:18,917 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:18,924 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:19,105 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:19,159 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:19,161 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:19,816 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:19,847 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:19,852 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:20,024 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:20,057 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:20,059 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:20,322 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:20,348 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:20,354 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:20,544 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:20,576 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:20,579 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:20,848 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:20,873 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:20,879 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:21,398 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:21,441 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:21,443 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:21,728 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:21,753 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:21,780 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:21,937 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:22,001 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:22,004 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:22,250 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:22,296 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:22,302 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:22,485 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:22,526 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:22,528 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:23,157 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:23,182 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:23,187 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:23,356 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:23,398 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:23,400 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:23,655 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:23,680 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:23,686 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:23,865 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:23,906 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:23,908 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:24,165 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:24,202 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:24,207 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:24,386 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:24,427 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:24,429 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:24,997 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:25,044 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:25,051 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:25,209 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:25,273 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:25,275 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:25,543 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:25,568 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:25,574 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:25,758 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:25,799 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:25,801 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:26,060 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:26,085 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:26,091 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:26,577 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:26,618 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:26,620 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:26,925 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:26,956 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:26,961 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:27,141 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:27,185 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:27,187 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:27,445 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:27,473 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:27,500 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:27,655 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:27,718 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:27,720 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:28,330 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:28,373 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:28,379 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:28,555 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:28,595 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:28,597 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:28,854 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:28,880 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:28,885 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:29,061 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:29,101 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:29,103 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:29,378 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:29,403 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:29,409 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:29,920 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:29,965 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:29,967 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:30,223 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:30,256 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:30,263 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:30,439 - ResourceManager : found om/Peer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:30,480 - ResourceManager : found om/MapBuilder.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:30,482 - Error in evaluation of == expression. Both arguments must be of the same Class. Currently left = class java.lang.Boolean, right = class java.lang.String. om/MapBuilder.vm [line 28, column 28] (ASTEQNode) +2003-02-27 15:11:30,950 - ResourceManager : found om/Object.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:31,009 - ResourceManager : found om/ExtensionObject.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader +2003-02-27 15:11:31,016 - ResourceManager : found om/ExtensionPeer.vm with loader org.apache.velocity.runtime.resource.loader.FileResourceLoader diff --git a/src/java/report.roster-repository.om.generation b/src/java/report.roster-repository.om.generation new file mode 100755 index 0000000..2a3af22 --- /dev/null +++ b/src/java/report.roster-repository.om.generation @@ -0,0 +1,327 @@ + + + + + org.thdl.roster.om + org.thdl.roster.om + org.thdl.roster.om.map + + Failed to create dir or dir already exists: /Users/travis/webapps/roster/src/java/org/thdl/roster/om/ + + Failed to create dir or dir already exists: /Users/travis/webapps/roster/src/java/org/thdl/roster/om/map/ + + Failed to create dir or dir already exists: /Users/travis/webapps/roster/src/java/org/thdl/roster/om/ + + Member + + + + + + + + + + + + + PersonData + + + + + + + + + + + + + ProjectData + + + + + + + + + + + + + OrganizationData + + + + + + + + + + + + + ContactInfo + + + + + + + + + + + + + Address + + + + + + + + + + + + + Phone + + + + + + + + + + + + + Publication + + + + + + + + + + + + + ResearchInterest + + + + + + + + + + + + + Document + + + + + + + + + + + + + Country + + + + + + + + + + + + + CulturalArea + + + + + + + + + + + + + Language + + + + + + + + + + + + + Discipline + + + + + + + + + + + + + DocumentType + + + + + + + + + + + + + ProjectType + + + + + + + + + + + + + OrganizationType + + + + + + + + + + + + + PersonType + + + + + + + + + + + + + PersonPersonType + + + + + + + + + + + + + OrganizationOrganizationType + + + + + + + + + + + + + ProjectProjectType + + + + + + + + + + + + + ResearchInterestLanguage + + + + + + + + + + + + + ResearchInterestCulturalArea + + + + + + + + + + + + + ResearchInterestDiscipline + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/sql/.DS_Store b/src/sql/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Database map +#Wed May 14 19:01:31 EDT 2003 +roster-schema.sql=Roster +id-table-schema.sql=Roster diff --git a/utility.js b/utility.js new file mode 100755 index 0000000..cc727d7 --- /dev/null +++ b/utility.js @@ -0,0 +1,47 @@ +// ************************ +// layer utility routines * +// ************************ + +function getStyleObject(objectId) { + // cross-browser function to get an object's style object given its id + if(document.getElementById && document.getElementById(objectId)) { + // W3C DOM + return document.getElementById(objectId).style; + } else if (document.all && document.all(objectId)) { + // MSIE 4 DOM + return document.all(objectId).style; + } else if (document.layers && document.layers[objectId]) { + // NN 4 DOM.. note: this won't find nested layers + return document.layers[objectId]; + } else { + return false; + } +} // getStyleObject + +function changeObjectVisibility(objectId, newVisibility) { + // get a reference to the cross-browser style object and make sure the object exists + var styleObject = getStyleObject(objectId); + if(styleObject) { + styleObject.visibility = newVisibility; + return true; + } else { + // we couldn't find the object, so we can't change its visibility + return false; + } +} // changeObjectVisibility + +function moveObject(objectId, newXCoordinate, newYCoordinate) { + // get a reference to the cross-browser style object and make sure the object exists + var styleObject = getStyleObject(objectId); + if(styleObject) { + styleObject.left = newXCoordinate; + styleObject.top = newYCoordinate; + return true; + } else { + // we couldn't find the object, so we can't very well move it + return false; + } +} // moveObject + + +

    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

  • Vb7KW zNS8efmqTY4B)>3x>`{@C)_JDzVNT+$bF{%Ztk_x2RVs7&xbZsSEU`tG^(6f{23Xms z;X^AU&aiOZe~Wesw)aT$obi9pB|Q)m#THhu^GCyw=5*#e;yeN^AAG}h>b-nyXx`Ss zBp4}uywJyW@nBcSp%$uCcwVsLgAq)jld*~E>3gzc9#}jH=+1wQacwnfl;fW@PHuy|~_9t#yYhGRI99YJ(dZWPD!22vdlpmQ|*%>SxuJFIKtp)Y3heV=Xl zT}0>R3>Ro}W#;1;hWL?E$=Dcjo*&)-6N?w6fEXBm{)ndZZqNKp6!eLz+NbnO4LZT+ z={O)&$4Be4Be?j7O!sFkr;MP-IbzY|&h=;lO`50~asjPiQQo6pS3)A`m0aPA zpPlT-knYxS0(@YhhEL#oH2)v|ELfbs(BHigl0I*B-^@|#HyHbV74xstGRaxjt?a&_7xZ`0dt94)I!$zYlZEk)3%#&*0pIeVV+tx`gC8&r zl;~}t4_z3wHar`e6m8AeuNwGo8c0x@4C3o@G7Fz#ZFpE~1Ue?(_uSn`>1+Hw4js}ANRw%R4Mq+n#|TEt?-ZfEf@?OdaZ#z*{~Y*`q`F?o-_|Jj|Leg2 zZ=11X4ILazP5u|PSk%LzZ6s0P$~v`` zk)sBtu757mtsB^Sqo3Go95|K-lq}$z!|A1=5NRSjVl*{zHAs<(FI`UU2f?$efd_>V zwQr88IVBR;LyY+`%A9T`)5x40IT7U{$xM?g7yTl5!bKLoa%8e?lMiR=dK0tl^V{jN zZJOG*R~l>=Ngl|>4~Uns#OR%0{+sK6Z=;%tB5WfHGY7b%95Uub@wm@#g0Q2HMp?U4 z5UOg~m^l!sE~m8?ov=P`*~h)ut}4AQ<#%R~IC=t>E+{z(+S#B&@oevmOJitr1OKIY z`1K7x;PLts{H$NDqWo-E@MY5@s#6s)uuk`le`NUiI@?$5c4A!jNAFnJXAGfj70c7s zEV%t72dw>@?YZ&9KX>IXa*hADURp+zRzFwSZrj*4MRgL_WqKe$NEywVPDT5A#kRHE)_?Q5 ztJ}7faI@alU3<~_#+wDeIA}9$zw>=Sbe`oq_5aOx+SBv8^T!-iC3=~Fc5v6)Luz=D zfYM_O9Gd@D2>Np{xD|WZL1!2i$;n|M*8HFEWGoZXHwfOHe>~-s&*4v=Th9JC)|LlR z_>Q@!Q=9~Y)eCXIzSE(!jL&*7gYi%-klZhns=njC3Qzxde{~_~_uYf_^jjC6{_LQ@ z0iNA=x6$d=3k65t`B=Ng1P7l7{O-!#Ebl+8oyQ+Yb%X9~TXp;11Uf;t-govdpttYt zNIPTxcMtv#C|{$Cgb#g$ja&jJ<2*fgb$9}fhvhaqvs*7*$)B6C`ggAko)0vbPu2+i zhKdwy@9|-~aOePB5fQW7HV>O$F%(EQyqqR*v=+P8S1eY<;w}AUWJaW@2w?v(4-ps7 zt{IcT8}$N<0Bs%XSWF@lxYn^RSQ_uEW5Ym}Rw9AKnDF8cB@<^}JN%MA&n8^e4XXgL zm=4SQC8H21Nt*gmt{i}b6+2#JV97ihQ>3?IM0@JJ5l%GKWl}lJk;{)5a_DIjPSQOq zfW+`bELimv3t|f=o>`?rqqd-JynDu3+oCLd z7zzk_+xXEp>lmVy4svun{1`DbHoh_x(^@pPABzJ!Cgj5RcM8my6f}=S*&CLCNf9$k zAXFo1CDD&HW73FOHj|N9p)B~Unih5@^`bJmteA0Bk)sp`TCe561g;VAqywP5#U>jT z_;?O2dni$}@sSlvChK9^5B5r$;3f9wL>A)nAsU~eJWnI94O98v53?o`X&cFdm_mnzh!A`B zc3Jomn|r-Px(*1jU=~(`k@MOsOB4-ZDLcHI$Pkh2GF=I+dis1{)2C_3WD@kwOrtjW zJ{?CECVU_qZLV`X%wm1)8ni9`l8~o|5U12mEN-G&*r=X$R_(kE$>xbmDN7>jK}qU3 z_iWIt?Z}(9(Xe6>O<_a;d&ZC;!gJ`$4g%a&N5!zYc^B8R;<-su{vzJZCCeeX_0PKU zUA=_{hGD0mv^Cy+(NzceUy}&cCrjh}*`_#;mxa5am;)70I7G=1M`X|kjUSONMH&0| z@cQ#q>s%*GX5pRzAzd}Rd?LNHM44R)lYy=88WasiCsyXP>r#5>Gt<^LV+td34|#QK z4!kC9VO(tKI+T}c%?dyIhmFBLpLqleT%t-@$TQh9eKD1J38F7w^xyO2?B4STIWAtn zchEFG`*1REZe&>N@XgYjGd@xby<+tIt2keZ(Nq8W{WzVl{`Ggf$S=~WS07Cn3(ly^ zApuwTI6T>v3#Q8nv1^LEt3i3Z+(BcU-G+i;wn1~ebxn#YdtzCpu5D@l-rYk6jb7Ix zBC!TyY9sKP_L3fqC$z>NVM6CHek|#eKPrO0xqI9f-ogb_Y_fH#XG{BSz6$Bhbj8bkyI}o zF5BS(f?1FlmX%Qp&CFROJ%2ru4YF=8DY1duzW_mRK4?@%M zBeyXn?3#j@)}elZ9Q*{PVdb$>Ud6$l@XGM!@=uL?{UDLFe>kwZJ?9u?;$gpsr@`P1U0hlbX<~j&1$wmQJ!`ZfgNLT%vVCluP;{ zk{x1gU~5llkVfvYw-$D%Wo)qNBWs8a>ScPXf7^oT5CCDZmRn;Hzi2YaBGM5tM%1Kv z1#c4*>9!bu+dk`Ws}tRHa6^ymHUv#gWO%I2G1Uox zkW9lcWpp8iD^J{=6!tgLaEH~#f$qsn>G)pt= z&tJ8U68J~}7HzqFFXF3$+k82bsV**6&h@c(xDS@&kAn7aXRO}soF^(sUFc7B$znSl z`7Lis20nO-51}Jy>QGJu^+qKoyK#KHCWTd5)Obr;|UVQ zOh@@+LC&CB)D`#=hUPyrHX0Mss%bI*Li8MJxWGl{G8h2c4SBbX+c@aAx?UPBpQ_8{;%;(O#aZaz_f5iG8Ms zP0>X&&v3pk;?esJ}VOY!bw<+ z2Y>%P;*2czAV4~lrLMDAhE9r}jpXHxL`q7DJ>na}Cmce!LdEsPh6=&|n^2FQ^a>{| z>YT8p^q3@|nsiZ+{A#fzpRID>F0GHa)<^qOK1s*NCXGS5`5*JJCk^;u6%_-M1)4>N zq&XM3Q2xaumvUbw!zueaDsT-(jU+u!|J%yEk1Sv6=2FC}{RkjZLx*A( zR%?#c5t0DJ96j{H*`8?^yJ9%m(&y%Gzlt1lWCerbY9 z?w!*3$@IjAkhDKVx51jVE>LDHK?T292kwOkM5Kdi`gD|q^fuNYVqMD+h z7B8^8K-RsOyTXC9f6~s&RP$Wwaba(dwea4YTAK9@lTX!Dv}|iSLh1CTzSnIB*aani zUVfJ-AMgT@9;m}#F)if42KwiJu-^EL(T0}uo12hLywEreOI{= zH$Liy%-P>#Ic|GEjC$m|2u8*Q4oS&nCVYPAfU@1)%O3h2*kds_KnY*HO@o&f4}Vm- z=>}obO`~A4n|g#XIb?0If%UI zHbEpEY(c>H1DcFnD6JG==O{hNJ;nOu1uup>!t2C>9;u^9X;0$$X9W9R32anPli^l8 zqytjpmtFI}V3`>Ni{m!>&oI5w_9F(fynG3Szcf4Ysmxud5sr{p$faFh>mx4i=cV6F~@E?~QAN0yZucy4n@tnaGz&24)pE^k}n>_t`8_Sd!9yg#H|H!wQRNvXP8yz%7d0!$|J z+r}_uc$$*j{Gz~bSjW-x$kGy2Pz2&po?!m>m_*N<)+0z?M3bc&TWy2w4M)oXGSdA1hQjtwhHvb<5zZq)vTEL(H`Tz+gx^j+ z>k1E^8`z~Bf5p0*PW?M;)CW9&oRWvnF4YQ8W>Xh`gaP~8b04m_e{ad0iZ3c!eAf<= zrytke&KC6tUWiQHBkmO1-VQ)wzW?Z1l8L^6-Ft$phrS?%us@;1g9P&a_`UQgwM;H) zW$Xd9ij~Pkr@Z2&D3sO*i~im$`V2byL<%*k-Z0BE%=p8m@>ji4o+lp82nS{PzF@^0 z`RHSNgG^5pAAs&D#=(Rk4h7K7N!S;mGxBERT8 z$`D;3%tE6#E=o3XU#JNZJMz%SqDw6M>0p^;`kUAI&(f2`7F6wp}-dYk6Iswl+A z_;)o9qGdugP2`E%7bHNYuLpsq%BMTT_=srxN?tnGtS!~Tw%+FH8+DhpW{KDE6(KGy z1$Djz7}~}Htt_p2afWw4*P5}uRN@{}8-`u3?1ObrtO@0lPW7H==<_x7o#5QPCqh_k z(h>u^s=tNNO4ek_(u6s|dE|>_3w-Uhq3#cgXo+Zac}rg^-fsZmA*bTL#Mv6`MeVV$ znrlZY?=jW8W+m-_@hFYko?%|bS|?SVi^^7lTpPh-gS>UU{PH*OWl0_BHy*&;>YqDH zVW5g1FEel~oHHN6HTIyXP>d|EoIfS*>cG(Tk_`JAHDSs*p1cBl&55g1t4Ee$Aq6QV1jwH1_IH=|ivqu6LQ;m1}d! z94l#F9IPPId~lu_wf(ap3bh}mQ<`RUX7z5#GpmVAr0V1X-=ebzMK~TmNt#PZ)^12% zi^sQ3+5UT8kjI_dDy&!S7iI*eodBo=M^#0B_+xJBa8jA+i`5FPeA*cZFa30LOw%z_ z^zaHsB@RidQrK=g7a3jQ+9!skpOQ|+*$BTlm$PF@`Rp(hH_|vI17TUzS1CsaGq{^S?L{!T+qcG4K zOtqOGpTJN#Gy&BjJ6 zjXUxu4uG#md+BiG`tI()o@WtlvEw1$la;xFCE3yRmhMC43*ky5V_pPHht*;;7_B{b zWA81mty^+KnP+)KizcrM?C zUclqGL7<@ks}~~M0ESv~j$t_c5!VcJ;Gz4uL(Bf|yeP=A)|EbAVt&f3 z?DII$n})n&AO!9Uu5lr>f=z5GvA0U~0r|zzthovtT(>M!lSFQ+*YmR#K zp$>U+ssYNwF??_AMFSDiJMV2&!QdgpxHt(kYrGVl@h4X?QicwZhzMfJ@xRfgEuPcQ zuz#qZWYypNFt>#$kV-P&m7&ov8 zms1Y}DTRa4RuxSTLqhTt4gD8(qNytDV)|4mMy6`5m?d_? zx?U`!=~`Xrh0af3`OaG`gC(6-yiC7iy#NwZZAtVf3+YEWhUCO2Q5s1ILf2%;L}wJ& zA|*1ZN(^{jGz< zQA4i16-2Z~Qv7h#1o6Npc-|@9ja^`bB_$ z9;KHL^UOVCBR<0F)Z@%)g(cjZU-`UZs6;}?8c8u5sogLbr;znlBK5g=+{%mY537LL zvLsv&BwY^F^~iJ%1MAnsVqq=eO%S54bv|Eo;U)l~XEm7AyHv&3{?pi?vu4v7VCDQb zgS%^p1|tU&;<|4l5C=#rOG}^`&fye?qZ-x_;}zPS z8rIG+wL?!<(H??)G-zzEUN5P>s%k=mwR4r_y_TNBH*Nj2rZ_CAh=^y5Lv~nf%HEyn z&;nT9E!~}L+>2dwpYtp_Y+Ufge(_c-9%(;uA(&lu_86KZkzPw(Pinv zOq-1Fr;Tv}JK65>Q|WO6v}TSzy|1V@{zV}cIP;!)aZT3Ud=_7wY#OYHLceuKQD?S# z@ujrVZEPc|uj~#whacq;r$k2xyiT|t>tkVN0=Mtqw{|(@yO({mJLR|V`YP3C000Qsl_P+pr;j#p#KN}l+k5?)2jV~ZmF9#AHK zZF(RlxO<*~UFBdU=QsAZcSOo(0oao5^#!coH4eFD$4-x5!K62@Px%9SVntiqoe#*#F&9-0#xB&fRz@qV9S(P7gwct>^AGVq9U;FwGCXPv;fviqqI$(U zfq(8TR-#cMRG?LxERLqSXn&=ByIAr@CEun{-tfmaJv>0q)Sdl2$h;8^K&#$af;`5X zd|yZh=naF>&#pe8ojy?~=$m--&5ik^sCmK?<&L9&YT9_E(MX9;<6+Txcxq2cx<1}- z);J09PqDhV;dE*`s-A*Dsu2mo2Am#XdKm7DRTgs!vxd^8dJ=>j0rQ@x9o3!P4e3Qcrm5zE0M0swugM!l7SZEW8RFNRih}f+Y|Ti5)LPl-Y|FW1jeK8_iKBxb2XT+YQd`? zV2$S3f)~@zmhndvlU6t1>qbWYqGbn!t==b{(JR2HaNE0yRm{8pM5eL(c)8O`{s7F7 zknY^DYw~JYO6{H;bK80kilwTf2`#UiwcT13IRuA!P;*=ME**3lbge8X_7_TrF=}hw zx09|Hl$megXElmu-GM+jjoF&=g+Ne^-!G21#&KWWE6sd^g>SR<7S#A9z5J9KtqmK5 zr5lwYx?jk3R$8pG3O%6H+HulHsxewd^dGpZA37j?=?9bua(NEZO9$F(g+;_2)GGGQ zYCZ88G;vr^y`+#7PG3YV@<;|uZfiVi|H5a6NliozWDHS9NrbAQ)H5R(Hqe4XIwWWY zvi7u9wOr8`d*o|rk)v(Is5N%sCZ~wo{=yr3T31;jdjg z@^3{#tYr7q-HjYyHTM;7HBk+_FYSVsSaFZ7qQ_O?I11g0!dRhu3%?v|U!m`*wI9v7 zbk|k%NHh?mtaMjtj9$`R6^Ticvr%IZQx$-xir_DOSukRgG*D#1Hk(mOD}+ufK3iez zt$bNpU*-1}@e7@+`Fn2ntfW>bt{Ua7IID(OLw0FWt<6`RUNf%RyjAsEsX!TL<%nBI zVE#D^g(|O*_W?Oo!alg|Zbxn*qT}X6?Gu|~e_3Dq!!edWO5t+*5sWX|VBF#EmgOlj zqtC)Jw0qiz%a36}`j*KdLdd^*{HVuVnMv(vc}EknGBv&7@1K*0Z`{|$p}I(V&mCIY zR0F3TY?~m2*`v=$tQFJjHaKXggO|BX+%b8E)@KBDBTvuR>wwcer-H$cB} z{$!5`zSexhMX>Pe_vL@=Z4w~~DtEd@&2w;a+pBWh53%T9Inm1C{*jh%jMA)Oj15Xx> z$esk_527Y2j_W_7&`YptkeO@pJWN>2(OR9>;e^Wu9pa-UHl6Oin(s2EQMrd-;nLl6 zOxcE4UskE(VVCwYi<&|$&3fCMw;uB*KkL|40eRTuYw+tybPXZo&n93xhnf=ZnCzkG zLUC;b{}{w;2hkWHk%bJw@e}<6zZ_r?m5b4SULeBtieTGRps>r}%%H zdTnUkRJV^G{y%I-jKsx-n3VarpxF}Cm6$NpFq+2rS>sTkvG8!r2b*P`TIstsS?QZ% z5jvG&*=23r7wYQnwRUIy%QqWazw7LlKLq+;{m$}$#RvF4eSP=$|Ge_|UwQS-bMgL6 z|I>uPm9OJY5LcnBCDP(YgPx^OYiEbpnzk!Z@NnTaD5d7*vR~qcQAWoX)1w|0{zknr zoU%8r?e-jrvhRuW7A?Ygjx7eeL=&@6DvnDYk#tzRAhArw)3lVmrNRHYUfCB1#XT2E zK1W1d36aeXOEs=gh4fa;j$6W$B$||`zn^PRDfdJ~Cy3xol(X2jtkg8jI=*y&t8V9+@G%X1;9u;GE-nMFlPk@O^6<5OY0`uz3)FUcYq(V4H zYu6?w*QMou!&Mbqb${5d8k3h9Rji8x39gi%`Hc~wPyV}ESJxs8Q-^9yJ&H_y`vRHC zxyn-R0pC{qzI_9TmxvI6>}71M+fb)vbA_&pTn}JX<2t zUYt`lc8-EG#(AEHfs=Af*~|MaQ$BMnbo8B!Wf&R~WrcYj@By>e9C$GCxU%9cz3Z0G zEG(Nvp{RXTSM|6KLEa@p!xtJW9AG#4%Oma_p6Xdc?H=j<=Fv;~s;8K560b4`fS`)r zX*2cvWw;;Jo+rbSyKqCVh z^Im7+?qL_6xN$8pm|LMP$HT1Y*lVm~gJNW4VK8$fslRwdrDQtC%RJDOseVTQL||#i zor$q1G7VZu$nl<8_c0kY|4M#Ju&nx;nQ<2ziErE8}^%M;YUq6jqhG`@`|9a~DXEo@Fep zHu>P257|EVno+1T@s%)^En&yz%o}k|j_xbQJpH{Py?`93@@*R(4|Tib}OL)H)tK_ z(<$s-xy$;wPb2Y6Jj|4>x%;IpW>k<=vb}2T0*cUNOZ*(YtGY+9c1KT8V~Js%_9LXD3QEcZaC_-HifOgc`pvxa}zvS*lV)7+Hu`$dT5Mo4pvUZAcqh_iY=)9 z<&fyasF*sJEW_LqQT=^wD=d>WkWRD0je`JP`JL!}ZYMr_M*#WGbt#S5EBcOYiJSZf zy#F+#WnA!9^ar(q+r-JQ`Tw`z99^GuAsZ;r8(#36!M2YYi;IEu_^XNI(APw z6n4eiwyxbM<5nz?8FXP}>7Bz;I+iskKM@JJZ#WEb^NkT)a}f?+m%oeTWIYZ?a5j!g zc`oQF_{;3ZSdq@dm_lyLZ*0A_Z~2P)dUl4{dog_6+vj!Cuh~|JJI7MBougB3i+s57 z0b_o?PF)4~j>@2X6HJmki%BSQoCl>5=ZB{)Nv!EX&O*nj6~9R@=X@7d3^7^fzZ>HB3&rCUZV-jW1)S3o{gz$Hc-|A3 zo!J#OvU`z+DH0Raq&`y(Jtfs(2|3OU(x2YY&_Y6ZHAD+?gd>F>Ad?W13P;Nw!M{*v zEmd$8uobyarG}o#Zdfkc<{reQ9=tD307`vS$6W@59tp!pG@_!8y)#%naSraulW*;y zq`wzb6#7WmcdU57mJ_%x2=M?atrwS}exBieQr(T|@Yi5{Zd6n(z{()RP?+!tb7rz0M35sVHDQRCA9r%50Jh13w&&K&!b#y zCLn!+q~)U0-N%813Q>aiTq_G3W2uo;dMd*;K)kHwSp_Rr*ZR$1gBzCO`0Ck_c6?h8 z_G?Cvd41@MxeH^Qv}-B^TxwuN&T@Ww-DP2I=(4hQEP-uVn;A;3)Q0TPWmV?q7A+)^ zjvjPPDct=`#^`i2?!MMSLZVjNTvM=~ntbvlkl^A7i?||3B>5Mzzi^-#l4OW>{{gh_ ze9O)*GACVwPkhS!is&rp3^W(vjriZqu=ukZhPpMe!MH zP@Srh>i0^X@n*4-nkpu2V(oR9wwJE$)muq(@2drsg=$1}0+)DYu6Fy<&Dkcb)yZ&h z;11WoR~S&yiIS_V@-pX{tAC-?9`mp%w~{;a@6io0Rv=g5O-zP$vLc^h5*Y`m#r0>W zz?)F^xqU6Z{aUYHFpaHf!;`t7W$(>A=sWc7g=-{yl_<~Oi*B(p1PDvmrJt0EE00X1 z^N_JEMMzFa#evOF#F)E56(pUxw|C&WlRb@Mn*ukG0NXf`L0xrF9CGaRQ`h$A|J8_i zu0Q+^Z}@KA>8G#lM?y%-a{dvI3_wUKzWk%}@+V)4>tCKjOgVhiF;RH(>X< z@-ztFkyjue0+izf+0SDH+s2%hnOhkEoT``TewQ>o1veOGj>TU@F}`!iT^ci159wI#DBcXFO1Bu9)2<>*`nW%b?Uo#9SybR|T*OOL90H z5x0)iy42DVisxVYoFo!UlvKaSq{O=Nt2{6_g03k`!F@ut`BT+kQwHPp$<$OQ!@u?L z@SYJKw{2K#vg>vPT`_q_o@Wp<6B`kpLqzdsae0ts7MC*S&`UFZ=aV$l#{063eSLNg zDWrW^Qsta7vY2M3ie_$swS- zw7}?YUkoKr5eeho9U_GDe#yy?C|i&!!+oe|z?IlzitRGx0~n(KOnKf1#Fx+nd12nt zBihnK5apYqeohq6!w8oN z?g(TnQutD(RH2g246!51oai^M7-vi1xC-a;$7NEygjYgwL-1DsKQNE|?)<<1uj3sb z-nRrvGZGT3j(N-k`yX~Iwm)V8D}ga@YRis8hlerY=O^CcTBJ{&;>bgzUxR|xxFX1nJ3>SK{fZ5J%?H-? zk3>PIPol0R6bDZ)+f+(0rG?XF@l7}4m+1_G^kWG`tSn-&d7}J|fX?DRC<4g~YxABn zn>Jx)A&WbaffZ7SA(Kfrs+4Lt9QC+jwII5hF-*I~(rBiPnx^0?C56BzZSZtQe?CZ8 zp!wbEd+?C6Nk3H~EjvVb;OWCTO7J9YD%_(Dmv^>-4s&Yr zKXXy%XIdO&8>>a7885_TZ>Ef&_iP7ywXI&doQEmzQ54!{g1#Fg=1M?)?oV3;>4?V{s$&^3cS;qj z(APF;zKC2)Y<>fCZT2E1Ij#(mXn0IJ_L{Pz{LjaAZNZJk|H7xxXkr<+Mvlu!=K>vY zqE}f;cZ!{vXKA$7iYP*cYJraghi`swisea0W*^2d^ z6~R~yUDBKecETu5r9dJBCAF7u-5KS>ST0JK@3*)yW=khzBRt1~*^edP>jia$NNx$a ziC#cc-oC-Y(Qy{Kkl&Lz!*l0soI);ZE4+t?nO4Xj^2w7;GMUX!1r`bR{OjSpIE9Rr zyfVs%Nh}cHqz7~)t5_@SVEzmX7hM7uoq>tUz(T2SqS!MR$T=te20v5Yt|{ zQ|VHtG6i)i_f;UZ#rk|P0!XwDM4{-F6rSR+6FWlFaLVE6*^YO(jz<&14}O55CEo;g zPXQ=oTL05Q4&Su*J3=~+!Df*xcbpS1?uuD1V_ZqSot`|KE7wg+m+mhqvXJOn%_*wu z!5VU=<1V8Mr7ntmF=^m{IPWQSOXUZ=#rIVp5q$ty+8YHREGxvxyAeJIORn zYQ5M%)i||ef(#k94f53@A?@(IB^XvIn)}oin0d*X`(jtBzVtPK#D#Qj>ROUsSF~~I z^NPfl;8EGtuqySsa+R)3nX?h+TfjApSBz{H1|=SzpxoU;+K++-~Avl>C5QD&@d>b1-UoVxLRf z8nKA!NaGi7ePW^+gjNsiH?Di4VwWs9B)@Rkq4Nv+TiSo9bRlz{+-EHIh8>XD zH;Qz@<4g4wN#MC#P#S<#S};kTS8REKA)V@9W{Qxf7fZ z(jCvqCf^w$mSZ*18G*Ut6JE$77h2XPu4xPwNCt8578S)19yjdjTMi13BP9TrGp%Sb zM;Ohr2{BE)Bc9*V}y}6<_0rLm6gk#OE{oXHSg0vne*Cc!4hMNG{%*s+5wVZ;utzYWyCLc zI5L;G1&mNgbS9Mah(xC#Udsy}<&5+(Jt~=0L88Y`Aaa5=kt~x)Gd}|7#eO>J(kR*Y zOaGnt?Ia9pBF3>>H@y2qc!x#fJfm7u@PWJ36_(^!9=KlI$m3`S_Vtwl7W%{ICa382>C{uVj5ogO zJw|$@hj1b`R?1k3(STyKE`)vR_~ga{>sBp)uMfueF3{tk{k-m_ifRQzC(3}%Sv;hd z2p^%Oea;QHx+*C~`_x1{X3E5K5f*oy!WSwWo}l;i3{6iYs8QlyquN3HeqojH2{c_F zbn*&ie2m8_n{JowbzUxY@!t5fbqSQMpAH2ftSl~ z0F%38H)qerV2OMxrKJ{8m`abdPg*>=yEASKWpKTL&B{>3G``Suo(j z8BR0Goq?A~cSdkdP0B2c70zeIUQVUWt%x0jGvhs_?Cg-t3Iv}L^-SeerAkq(kR2nN zT4|{CjT`;VM&2D>l7Me36+3eKMnfWLPAA0!4=XTgLGB)&#gve@$ZW_^t^I~{GQ^m= z@w^Hq&EIZ~8fUKW(&QJ=IEq`1kVY3Q@~!xSf?EweX)g@6=|&5@AX7l3)y6{=(tN6Z zAy%5pwG4BFW;7eZt23}kl?9j{sfi5?%R^#(={4#g15PIN)msVJ2JgqEm-!A?nhvt z{4}cb^yMqHi1DXkiLl!utkv%V(| z=0wjk?N!T_V5r^~SH1b)TpT*nc+!mHK8-%MDz^@6NOQ>62PWXGk($4ql43%0s<+~f z4Yo4nEvEAaO(vtw-0C1;c&Q+(j3TS7pHU`2tavKvceQb>wZ!jB!9MJ;s%jLB%Eiq3 zu|navFpanng&W}hY)1&%uQn0dFNFOZ^qP@M5ksB7YOA;<)!fQb$Wa-|D@9$^m(t4U zQOB|h1ENN1Xklt~UqjZ(TAFH`aH}`RF>{ADYFcS(d3DwZsBXN)tGXlAD4BIB|LRb= z;sCcba8oOi%bH1g^+K~aKZ5$%cc*Y}gxrn&R{1O(t+8Fpb{BnSr;|)JbOdb*V4PK zT1-^ho_Hj;qR&}kF^n*^zIA4-9xLzeFipB7m8ugE&InFrerq*@dW#@oy}1Fc!2zw& z0j=4A&fFjuaPdl;q%!@e&P%ns$}6Sc`qPD*k=oDRJGFbkJS#d*1zpgHRqcmN&+gY6 z97n$_+~=!woK$;J9IChPio6l|mHv!FKO6a0@drDs;-S{umhN5BORIP+D?UR{sl6uZ z_(fB%hHyjKh>9imsQ*4_os!URCZ^F&I2S8Hf}=XzL{$$jn0;9Et3}wqJSiDxl&+t( z#^u0i)xyb{Uo|JH;@FNPAVyF2htmf8T>i`}EC1T6RZESsMIu(WpmQnIrp_l+^%Xmp zm@*=EQQkL(?wv*U&LDfjmpK-I}z}uKQ9*u7p>eJ!(`i*J;E4AK(!MoUJHO(yjElRbf6MsoS)piHt-}hCS84y^sg}{7fSnMtZ zzLy%DD?^uqqRU}STx|MRk&8{4i^@}$R1yw#AbzdVa0@*X3+as3^kYzUFh?!c$2R_` zHf$Y&I?>E^==yX6l-0w|b@(JnTrmt9A!0yOLOM$ek@YR5)(br5EgBN0C;hg_Rj#rFvzLmUGI!tL=S1nvA^U zIQX$XcWTCwjvTYJj(u@@U0qw*B`N4g^bFHUY`J6TZSE!bw&X3hZvVk0XPctfr^&Zw zOj>u2Q_*nnS$Ki1euiyd1U|TGYHYQ~nIIIhdVqUn~ ztPKwFZ)|uA{X&MfUOB73KTL^_u!-4MNWUJwJuNg=qHLdY~U-q z3pD~n0{)h1bTmY?^GwxYY=#kt@ai9?9;=lyZb2ToC4NJiA}{{0jkAH|)#fxV5YW5u zf6_j){dd}DWiuByTUQk`*Z*(loTl+N096C+XK&WtoF(g*CKM6Tf}N~UGfop2aad`p zFlBNFZ6c7>fHrx~q`4zY^UNGb5vAWq`?FGAYoB$iv|mN4t>ikgFKUZg&6>vZQNs5@ zL196{nu`T_cgid^>HD=`uFoykzRNAw*`C*p0D}SOLVSO;rvN|UL2;mjsOMc}Bn&S( z0H2rMn1Z~<@=0jVS8^aiERy|%r02adFd<4aTx#yiY3>V}{u&y%;OR((SlyY6n4j)| z1tkCJsF`@}fC;z&r4d~L`mHC@EwgrP`AwKDe-NWHlfh{#!|M@k&sS{#AL-dM7}h)8 z#ZPX;<&B%bPh{W`cZ}of4SnA`ii5%N*1-jHAL(ANhw#7$q>rH(CB^?U@KxZ+B>I)% z;j}3dD&i?QkOrh2t6KR(YxF#c1qPI7j<6h_uMV@k+7xq3e#DgoD{a}?ST>6M>E20i zS~LPpYdYJS8fBNKXfnd~JIX#h8?XoJoNZ)wo$4zd@4R>J&&47x3aDmIm1Q?Wpd=rr z&LMH(M!PAfK%Tx7m7X)ze$$qbUQ4Efj8LG01{fGUx@fmVJUV)T{>!r|&$JFMdcapx znf1ZC6geSn$2YlqIVUl-v6Ed*^>p{uWQv~{rYZ(A_7;}MOMy?D$17gPRhdM>``JeX zhu=^kwPnOzJg-kP?-Q*eXA}FlPbo9VUrGsYew#i|LU7b!U)GDQO*HeMz9)|wd zN`Fz=lU>H7D8C;a_E9ToiP%a{hhEKgVq2fiWJV|Ctu4|H?0`7i1%3=R!}zAA!epw# zL5ckjrvt8BFG7Kb41B`?p%PTjnk%Zt0?(JyCR|BuDkda7yHGku=GksEfx<+*jPTQ8 zJVnw(#lo7Fw|lNUkyknJS+!G>9=REcnp<{P87$VfU`2@KI7LpX-| zDjxrlD@!fS-LfNXK8iN)`o%H!T&SW$5zOln!kf9Oq(-E*&L{!xz8y5s&{+9UnLb&* z++{>f0=djvFPSIvM_U6qLOUee9s>4L6~(@ue2#+Fk1kU-`Q+MoKs0$G0) z9va&fn&aLDy8mE#{jMw20HA^FAIAaqDL&-zj`fA$pg52gXAJ#k$UpqVw=r*f%YL5- zd5)N7@K}yuFZIsnQ)qzT%!v+8r<$sash@&}yIN7n`Z|g27BQb_Ff@NE-bRRKC z6FQ(=xVe#LBEmuH4OZad9J&4%WKW&%H^`3Tw2S)-1je`;agixA{q_#+8c~k570^n$ zDax*TNtaQ^FQ!QuC2|r9D`kz}+=_Y6C@IY@W|g{~m68ujy@S2GZEiwNPLgnWMP&OU zxZ;LRXk|3iTD4`V9cB)Q8f6Zj`!#UW9eL`gPl`m1^;lhK)W=Cl$Y(P;5)O0@;(Q8y zD6+d#VBw1AqF8gxtjW1^$>}#{r2FL*HZYMlN42oe>3)8+3}s12vV7{kY!K1q7=JS0 z%>YJ=7mq1g>;!~N(xmyC@G-+9`j`0%&r9H4I>)ZsixbOs?H#2%TswM0`eRyT*ZwN) zR2?b$dpv`V48C^{-9h|xJ)hnU-d*su`Sf6yUp>f34h(Mvq9y!2IsClFtlMJy`1qG$ zjw3uFQy5m~gTU5eF`ul|7rO)%i`F^tkWLfGB$`852s+W{bw*J)9wYoR#x#}tNclvI zdsc75w%BTiydy1Du8fPe3 zG(}bIrvS|*vYhdxIY-p-+^=z52liwmHm_P-nA&WiUEMdBQb~lG`jS3Mr>wC1f>3|~ z>v#L~WE}WT9OeipdN~oUhpQ-FEPt}L8c5=52hax$kir4qT&HWYav%9=qdDaQW5`%1 zGW0AxbTP?cL+j;Wh$q7$!H^W>l)8kr8oo`$zm=`@p{)~i4YekjNk=RlTUm}rTI1-n z0Ye)dtzffsvEGCUp4h?%CI)j14<A#6XN=N+i^n?;}$39g^64GpL)L6 zm;Gp?E_k-kDguA@Kp>uA2=~-NT#-n4V-z2tJl6e5{1Ks-U-3;T3zY$xWVAT1D(p#k z@p1m9g@&ou2!dkBCZ$C|y5#`W_wK0AAAW2vB;x&2M)|%Ai5juT&Y`Vo1IGA@15fMB zQRt2ztlCJ{S>j_Mgt~i~N_TUowUd+K21vbQ&H#+}A^`K2eKC8(1@%^hzVJ4gDsq_b zMQ_lhBPbX9*2#2nLq)+hgO%rol`0eH^9*T!t`G}P1XPY74^P7E zHAq`i%(+QIVgUXqq0i1q#-Z>5oX(!%TIBXs(NBtcv})qo-^B7Hj2tU>YzVIsM4O3> zzcQb~3=9-F_~lp%LkK*(Je0_7vUn3D%&8I-VJkeK+s++1l^&37D$D7^@wi>)3w#zq zmF1utm-HFeQj*tH8sL|df`1wY7Rw^gK|IWbz#kqlia@DuRTBl@s5ew;6QYTh6v{R& zuAY*a^1-c~7uC2xI3={-qC=r`8CHD7%O3=L?+pG+95y|~f{_FT1Qdq+pWZzGaHK#E z&K3+tjz%VyW(+0{c6JW-E)2$IM)q#5R<3+;k!r$$#OeBsZTx^^!BiDdZEP}3p=)w>J2nX|TkG;J+P{JFtSq>{4l?Fc zEvRG7%6+e8`=216IGz|>y>D;HwT58sMQ-x(_%R$M1~5QOk#v}l2H^tCi6&wnjHt9F1)@9}@Mw88EtJcDrWe9~A8qY9?D%5mY z`^_-^3b2UHrwU*2BB^1tm8d{PlO{R8W%a}$Om;_B^MutP+%Hpn?BIWGzW7C`3ESi(aDrB)CVtg1+(nFbC!;M>= zIk-Hv(x_znDzDMzO?{f5&ZX;G|;q>j~fRXxe!&oA7f;fZB;|?aRsTp{yDeNyy?x%Kd ziCi1Bij@Qa^6;R?l`9-wtJ!3O!?KKD{N8!KT9(Fr+uvt)>W5<JKL(IDpufLFBRL>GLXZHxgZ|{#ujU`m#fWfUtSOWH zg7bM%W(}fuY#`7t*h2iUWZqUU(d?j44B+RYnPWU)rON_HF@g9-IKZxiA*44gJc68| z!-0H9K^NU2ByS7w9!Zhl7gWCsjkvM(!yB{*5mVsrdgIVsYN<7eAskosFq~q|fwKw5 zp)sDZoB%H*QTxBH^@NWVBxx*jZ}q}ErqQ4> z%pYp7^L<+R9vA!TwwDI1(_LWs0*c9RMu6dU`!d)9e>MV>O%6bqb4R%hr1AJuzw2_A zymTFv0?J75SYz!|Px?4Euts1<#(Se~pUAuVv(Gi$%eyc7Z12&zU<;$b7srOq%|Tuo zq1-ek%X1wmRVfqHDHDvLhC`e7XZ;q)1pvtf4GzZ;ofba-gSNK}s`FjaeuF!~-QC^Y z-Q6Vwceen+J-EBO1YNkhyL<59?q}sc`^-Bt@1DJ9Po2Z_g;WZX^;BJb|N82_yZIh* z_p_%w$e=#*89NoxYxgpCdE>pWQ~|$swM5y?Htu3?hEYrKxtq~{;=_%+FD3~)JIN{Wi)5sFs#C@A|Rve8F zecS@A+lBu88y4!vY&htYAp<9%lZf8&E`MO9=xL? zb4UnK?C#m2rDrLIJr?37I0V%^qcPeY%3f@zU!YxCVhZd@P$POfV4h<*#)K6xd|Qmh z=Azp*;56G2;2d=G0k#v}36Cu;3m7-nF*hhD!|^(_{r zM{hKxV`j4oNeEXpDg*qDI;AIbuRP!W;2hULq%z`p1Fm6rSQul3$6z!Mp5u;e`+FUn zxra|OrlF$=GSss=@>IlQde|WrZ2k#>xOFTlEZCX^-XJ@BwS||MG!u9;XN3+x;>TDX zK@mma{eAgQG5Hdbp?EK{^is>;kt4YBPn|p=z2mDG+>=V{?Yf-?)jM_UY(gjj#plEw z33U|dq%c`#GNQ`daj9cNhZ6f*9_JyG8!}SnsWzk6Khq%@M0+95e3&~VfpH!3FhYth ze~DG@CL=!lG@sp8h6Hl=1PwOmyo|(Yv~>JEhOnZ+$jmu)k|c&_GrS~-l>|ukGuRW3GXb&Zp~L_e7fpKN8z9vq=%?9w~L(-Yr*H>)u?-*O=> z+)Sm=!qu`kI?X0Qft6wUxg*l!XR7g}2YFR_r-uAsYu!@I+Cm|Q%A&+$QZ~9paP8TBO;^Qo|jlEQfw@ZnVJp@PMOS5DC*b-(a z^+@hZz9ZgFwzKpY9kwO&i0{j2%=k?9>fihxCMf;L`cAS_?5ZE=2gy5*2y~?8IL{t ziS)1T&G|FOY{Sfxa9t*yu{iSggWm?pFX>}14PRq=I&&9?GVG;8>Gd$+w9}v*H|cIv3mLuLX<9ki<1^*&z3U+zxvjQW3a+rvBw#k&d0Z zZcMO^0>dqr75|Mn^tyOsN)|I*=d|SUCOE%0(;S8#?k1C8P`6B4PJyUCgv$42iqJq_ z6))QTOK$Ne8H~C09Ln#-XOnHYQ4(v?4ybU~r4#kSB3g+VGSdF*3+z9BF<;rfX661~ zK&UR;gE7BG46bBu-J-)y?s}rz**-LT^ag{_m;>K8B}P6jVa0S^2#baH{kZ2FzK)6u z@rb{ro2pNM<2&tTqnJaGeU7g!~xY*MTq_=p7&j4(3ld(m06*)w=t;h$K~7sE4NQ`QaNs#M)Y_{9w9}Fg8r1+1;v?G^NB)bZdbJkA@bXP zD2=Pr3Kg8H_T)aetECuV>b*#rF{*PRv}G>1eW5%3$ToQzWz->6fKesVe6TgC1-Cw= z0!Er@x6q<{5EbhZFLk3ZHMpT2*xEfR=&0@uX7DLTsd>6Wvl&M;&8%Q^@PtxMPd23< z(+ZW#>n}2pitK!90#Z%cA|Tnq$l0RUrmrm?SiXEB_k;tc9`KD=h4T2UOfPcqmg5z4 zCgGs5* zE){TlZ)ds_V#`C6&H5}8&0R3CsSJtnYE)ht>6&O~hiQol=7i8iQcQ~mMUII&Aohq@ zyfMTiaqrmQu(zI z@?+pc0E-Mi)B-)21y)ZbqEniz&hI<0)Co=wXKC0@9bzpCwIrCnRNFqLgJs9*Nwe!? zRmrK2?r6x+D-PTyl#W}8&b{@KsJ(GYcMx3&UR{Lns-CZl-(eTSh#FJs8!d8M%oe|X z*RukZp4Xd27Eax;f_ z)VPnJ$@F6Qe|^qSGL7PPmMY*Z6UQNRo|U7tE}{q64gD&QFs5rD4nA1~@u)PQtw8sv z9}Lkk{#31#KkEx0IhDWM_6wZh%mXwMYP&E_M>5R;GFvDuws%%%2zrzkBbhtIVTA}g zL)4-iMwml1DCn->`x$A-{T_LS$7(Z>?Ro5$`qz zb_8|=2YjM6)fu8R(>V|~bnO>nl>nX_{?v4!kLlSka=6w=Q_0oc01$)OVDnmJh_rux>+YTRTA!-hJJ{)aC zdow_g5MF;IT!Pv$;(Y<;(hxN2+%46H*JmO(n2)HO7QNQ}S7UBqr3CFIbd^UGXq*ww$Wf8!VJTryE5ZQT1f0>sIjDONGysj%# zBc!S$9wk|&X74$P2p4d!=rX0)Gpz*zXwJ;D-lx#lc^oDN|MgRhGp<&}d`xnl;u4A^ zq;oi)=`kL=%E9Ob0Q0ShkP{TSdl~>4cq@$v=T|4mxpmLNTRT5seUDO8EHohxwxS2p zUTUXV9*rQM`x>1fxwauucuw{9mCS)|_(f={U7s>YW6v^vr~}_$F%)jS`%UifX;y5T zW+|or@Q2j7X!>zj>e4(JY4BRWw!PYYhr-UYXH~!&8Gxs+v$uelzBn-!L$GvU3anv! z>bMyzfj(PFze3Ht9F%@}2ea%(*CqAp=3c3Uhe^iPh@?S~A#9}UkL)fX>0(}hqmu=J zZr^{OyvhFSvipacOWbf;69Z}vcP*}p%GSYp$x?^Pu$r{Z(Gu=W%F^OSS!bOimczxX zge#)rN0&r0YcQ_ICy(#fp!+Cht6Y5$bJ&1gSc6XnpRzxN>|`$JXyBPrFzH!5SUmi` z@Vo!L@^*Z2(FyDqjB)+yAU#CKP=8k)Lc2b7Jp6@0e9@an1yH_&^D%z24$2w1PWN+Z zwmY)w)TU!<0>RGC>QP8koTzce2{-w0rMmm;eq5tv693CjO@rDBg}!pekri$KnK6aA zt7_Er1`09po4W9)k{CCYj$BVoqh zAtKew=I-t~pj7cCeKjh@)_7FURZ4?YZG0x}SQE~zWsIHw zZ7-~_uI>F*lfTTUat&9b`MgT!uDU}N*oee|La^~O?o!O98205laXRwFDSC3L=mVeu zOSzi7mWQXej9MqkK%*KiFBtv2yH~z(k5?{+(0t@qwBTBCAKy2?g0An!I?l=zj*4T4 z3p}acN8se(t#1I9+X(HJ+oIpd9KOcDnQcQm{pRnRu(X@R@<6Y_*6Ps*djN35t-kDj zI0b`GUW7VNoGiC#96)+&9XLa?EGr5ffm7$PujyXWYHm9i^PId#$4y0>4b`Ws>nKOG z_T{CF_}K-7Qkyic-6~_?@ImpOE0;}5sh@cz_X3`kSr-EzlPi(&3N%UxmW4ps@hHbGJ1$ua;@HYb!~qehxAJLgSZOE3 z9Pr0PFp45|odp54;zc4@gB{fl&afqE16ts}StE9CkmTTuaF!|p_R)W1>;{1ij^}&$ zKmH^@>FZ`J{ZIi_e5?j>kONuS1uhbPE)>~PJ1W$s8z2EFQsvf&tbgs6hg>IvP1Vp- zb>s}gJv>8x@Q9fl_y%c#4xKwMu$Oo~go}qg)#y6J>`{Mnttg$aDe4^GGOKHUpMj?O}tUV(>%ZiQ#+- zZHm#muzl(-;lf#w_ME@`8c@0YMOtZcD72?*wr)!V8&T7NFjHmQSN#RsmsVs~jZS3O zJ^pdeQ0mh08O1y?NEQX=#F;KG{K4V7?BO;CMZWBzV*Yvw=MH0;*Q6nC=>h11UT(T- zInXR?QJNaX47yvJztPK9GxQQUnaWLRiuILgp5pxMXjteC2=3bgpDFb0>iteJ7>9w% zMS~bT$wVlYIJ8ES-%fMjKKx^D*z=h|YIDF37>S^uNAsn1iGe%k!eReWWcuF$fwY~A zsky1szYGKr(ecl5-}R8#SCSj)R_sRV_CanzZXtlrUIT2^wM zJ~WoMrZr!%n;lyn231>E$C*|Fg$eATRSO3%uKlqC7on_3R zdkq`XVs@ZOM`}oeA$#5$S1;H6du_6H=TfF~$4)ET-t%-2q0M3Ft}0+3rkq`MBb~y` zE1XcQpd6}LkvYYmp4p|izTzOn(xDhRQU0diI458 zeHi44&K=fSGz|PPzrWbj33~tF+j@D@gLvqC-Q7GL?|c4nV%3@L*TqHglY%t{l`iBe zH7~_9P%lfxvKcS^_o3D8l|xxmM*EGrr^x#YF3N;UEB0!y7Qw}# zS!@Qeodf{e4Di-foV;@&pj@x9$&ju9RzhEiO081+x?&`N#WQOXt+EULR-wAxg@(0p zMzo^woGyauDWs=KV{|cWErP2Zt+9=qeuWkK72PxsKh$zR2vHhPPSF&!x|a+b0V zu{%iCTod4t`Vs-CfzbSX?Y83-lcR@>|3i|dG6c7sIC$$k_wv((a_(hrkZBQodUoC+ zr9Z0iCY0B~1P^foj$#7exh>2$7M*R#b90`l6nyY%CopNy^VnYkg=s&+Jtv}ARRHAh z?-Hh4r)bqVOEduSfC^STDn7iKFCyUymKqnZl9CE4wfY?6R&DG}FEKzHvNV z;-O_k_L#2aU)Ai_Rp|D>R-nK5lzbm_<1YO1d$l+pk zBu>=2MjhMe1<2D-s*EthVButIb;$!~$ql+uQ_mo`a7UQaP&rmi%$=6smKbw$gtns1 z%}R=FFhN&CS&+q!0U+_I&*e)~f1M_VfO9%x0X263ACsl- zs4&1LdRur17Bsi)_9(LgIxizFvE*zD1p!Zh4JEeSFhQv=edy{0& zX;p<7FKF5IYG^;SP6b~?^7O`anr+_mH;7SL22N49f)LRUQ32m0UkgI>=%IgIf!Kur zun)`4f*MlQM08$rF$6zP2MCsIeNk)D z%4;<%oBRr)Q`^U=a@c&tbar@_rvO~zvf3?X;U|Zb;0N+YaSfkMa$bQTPX7-<{C}Z1 zG2{PEaY-L4y5eXZ!$0r1?607Ni$!1+VJHB zXm3wxu6RXfh}+rW08EXfi8>9+Y*(vktwBYD+wPOI-1qr8yN+x$WSth>_A{MQQI1-V z67e76g~(V%XbV`A*r}&=9Y&oxf40zAbDk}rM3ccLo-Qaf9=#-S+7hyeNwkf!L3#;Ka>UH_^5831oOfTp8xJh+9FXf%0#6DG{qBR>Gl}t z7x7%iJzIZEPx}=#UN=vpAGTBNLVm+E1A^ErJJE^1uO)nEs<`(N$c@x=jmhqLpuZx5 ztE5-amxkk3xSP(X!!D-lHRF=Ik1(+Rvco=WtdHA1s*VPy>}5^jjx7nu7L2v_=wx^u zYLwwRpNFgaJzQ5|6*sw2DZ50-B12zMZ?$xiSUKXe;5LAsJUdCxxOK4LEw1f~U#Fm4eGt|!3L4J}^WcivzvqoHCm2tHK2t2jXRDSe zj7+x#z}+{Y4L7xu87vL2%jIuQ*B;(X*FG@;(N4XcV6TJ z45eK;`5j9ylbBgqhUuOXQ4PiwQ7PpYG9USAKyD{3uBFH~aSf>K{KY~7ElElahbX$S z8AlfjhEsuL^7qX172GNtS9`#t?DP_^+{CFbxy;&T0?Y$@)1{BbjurH5X zpIE=8_PCZBlj6AHEBAtItYkhC%;ZtCg5rB*nxTpFlT#6p7hQH1fXoqA-*Ri zzhMkJ)JExU10b7a*2XTy!uqwy#Qq)8y->^>`(Marqe0m2WLy)xzV zgCNY7@2aRKX`2;k$T-ZHObjQG1hurHp(brmJS(@M(`YJTg1SYlYb@fSSMX1q!|dE+ z__In{8SWopz0AK(7Gn0Uz=>Xemo5G;k52$CE~XA*@$+lH1^jSu86nIt#Q%YdZ=Zm1 z4#WqfVhsU8YP2RV(NrPc~(GOydZwU1r!%DnGTHXeB0DHpV>uVmEWqWn;|7_Br5GH9PM7ZbA1jZW8jZnk9RF@@vBb$Ve>7#~V?HlSahY!wLYxMUHOsH4rXz8VNGg|G-80 z-{8Uo2p2e<`AIStK)9$mr)AfvvHmx>DASqLy#d;Lo5R>?yGhh|A}JA()Ox+9?=xf5 z$P(9&(*Fl8T0WSo;F~{3{JeIXaY^UGH};VV57?i0a_*T$BR=>3|7D^NMX5Tr|7PrBCY= zJw1QeLJY_jB>xv%XaLy)K?m?3*@B5l#>ePOgCIrN@n0TaqyW3#ACHgqAEJfyzb-im z8+&7y|B>Pn6_KB)bdBD+6{7~xTA2QF)#JYEF4h5nu6pF>+|Rj;zz5S{!RSl-oJY+c zSN&m-wSG>e2@b@BaWa$NdGccX_3-vI=Pc%vnS;0}UILCwA%L^!OL`3}4$6AJG0;-a zaOQI}7=S>pho3oZvi9c0O8oVUMU+fmuO4fawaI#;0Ew zc_ab9U;~1x(+ve(H%-9Q8&Kdu_)G#%TszUyVN{s8<&%Dw8 z^C-!NlM$yhqtV2LgOZ8tGdK#rwI&koLp`p>Bq~0N^`c4ruE$uh>QA@kIBi}`%c%2K zsXYmR$_SV#?9l>PQOK$58KL!?xgni~47YX90pltz2MKFClRxQ^iX*eXEMQ#l8H*=C zjDT?0EGR?SZmt%^Fk3qRMV+WTPU-*%MtW7 zJ|b8p;?vj+q(?NAW?rN@8{y?*#O3 z>QutRkY7AVi1>Z;gB)ryzQ}DWNUh6 zUviMJOY_;G|1E#MS3T_p0P|;EVE*hI-bp&c%+FpFf8u@hUniF*Y`KY!K!N^aQvk>(H-MIibIAOlL9JE9H_XVfOgyes5s5!A_cw+eD4H4 z6b1{W%m(Fu6sVZHG{{P*JL<;#r;_#OlzV6WNb`Mqy9fIu*K3Kd!c-jyqs=j9$<#9_ zjXz6Q*!^V(3r>}ev#7@rK>9G|t<~@C+M= z1Oz*jXXC$0Ss*RtzYyn%k@p28&*3K7#WxHAHiK@}4#A>75v`T|Q;sex=D*Uk~>j-EO4mE#o0W>ust(aHd>r|YEz;k2D(gHcB{43LxS~MROX`*3Tn+xf}P6L z+{(Q+*)r3uSJXESvcC1Ku+dg)mz}iKsiN^YZz@hA(>L}u=PJMH_Z4OKb!%Y7m#w${ zv^>fz_O^9yXFBnJ+SFOZ_7ZIc_aph*GqxO}I*+*#v5yw~y>-XFpsn#caU*5y^lc0g z#`&+Mi2zzOl!^n=0<*TU5Peqn(c$tlpy1r`fPz~uo6n|!xb4lB>3eH^jOo~HWK6bB z3h?aPSG&hBVB-wdHf7x*q z@Q^Fy=d%nbLr9Gfz)Pz2g=q^09&#Q$eF7vbT9V#KkBNikpj^929N!&be$^Mo?j3=I zcT&&%bfKsSa>$trF<^5vL9nari8e+OjR*Qle;sm4_`pMs+|dxmZnfeCE@kR*5 zZr+%k>M|YAw?49u^!5i|s3bWZrS0@AcB?N77sfB!8TKxF77^=9wvoMh+d#!2-1Xi! zv6rXz$R2^E`u@Ei(&zkMbI4Z)tlAQY?%+L!WoNnxeG?Z8Q0`K-A0hmqiXl>R)Wj%T z(z`Xx>n(ew)) z-g$1kMpvR!jV^h;?oWMYcTHi%!GnCup_y)~xxMaZgTeJTkOmB^8SdU9%_nR&8V{rA zKTa`?s5?)av0WPE5Vr6No?;Z#S6@J}Pe^tcO;1kPGBnALV~i;Bt@@1sV6VpFkC~Os z?pOgNV6TS$pI!}HEl)!isVZQvM#NrCs=~nEdNr7Vy&BQDGcrY=6M?-NpA&JamKyyk z5wd;C)UK`ok^L8E$p3(G*ZlW4&{G>bCc5gez9 zekG=k{HrvBT0&Zhc&t?WI$%VD)jFFn0lLff7X4RgM*oy*#qBv=9PUqPruyF%iG;e?iMA6p)H(>?WMQk~uOj z@=8Tu!-fPGQJFb#HZEkj1p?T=HEaaV^Dt5WtzpA3|3b<|WJ-=2c^%UwHw9r`EGwhb z85OHL_ZOn{Ig6u7Jg=5G-?)$X`cgmzl;?{>%aCGq7-9(tx<((uW^AwhgOW$;0hN-6 zSZ|#Qr2N$MO+t4#(*+p+jawj+PF9ID!GjyP04lu$>H}-m;TQqv62PAf#9hsaa8_=p zzul}Di+UXc(yyTI0s)qD(i#Dn%r#;oq7g(|Fjt8+JPOnM668bpP38^&Y_5V%bc%T9 z)Gc-pyQH$V^80LJn`3wy{gqF^Pz&CGlKX)8W1!d^K%)Quf|ja|Hvg?xT$Oz0geHy_ zvNh>DZdT`yB#i+NeQoS!&Ixa&M)VC@`caBrM*U0qHWZU~Iuq9lLR&pEW-ewfC-5oq z)03f!%o&B)MmR!0vX5|X_2x*J=!Z=%lX0Iqo|{^GyH6|gdB09E1j+2qj3#ckH$fr1 zJQ9T?bo3h?B(Mu{NY7whmvgik?bSY?(&n-^LBh0w-!_56q}M|k&b~YK^)Mh(r=y20 zEWv#!>^?6yOv!1`O#bTJqYF#LqGvnbZZu>4{Av?$eCfZ10#LDKOVPJqsNj#atNK|t zTiU!%e!Q@jN7%6bUGrMZN1j7;#ir#ZCIFi;5th27;1LZZve^TZgT7@a7_9;>Oc#`N z;6&7Z!WsMM#8fpib-`wHGuhLBCP+O(FqUdUE8!k!YJ-hv)G0>5iV}={rUq-{0@Ulcv~{N3H0~x^(0nJ{bFSkF+X2ItPy%*|hY#w$F5D zARh<;<@okWZ7JClGm@l4r-eL7f-|L`N#|GR!J6ZG@S|p_YU-7`1y0gxw~!b}ikx1u zhK_Jgi5B3V@VLQYS;|onf+X#~L@`D28aZIXPdbg3fiGh=gx+C|pY+n<_3J{q4R=?Q z%5xcYQ%9Oh5grlE!M(;m*Pvb2Dx85r!N*FrPYDDI*i1V^W;u^0sewLNuTFC^+f|QE zxVCV&CX~iqz=T)Q*HVH@6?Eu|M=o7TryL4B)uB4&A*lMvavZvCtR5jo5*HFP0b#TEE&BfEg#%Jj&o=xZ8UBH_ z{J5cf$w@r6@2z7Sv*CA4YTuPtboU!1-a@V0vUF^!6uH!^G>TtG2)JQMG8Jxk8(G{; zrzVBOEdFu_j^A9XU*cflq}(n4Y;ClJ3#MMsEpbuHkr1DzM}U8ZLYhI54Ahf3)+=@! z&+?mzCeN5wT)4h$9<6RJp|Vbs(aBtqV>$`t@rV9^#|8SIu+VROKadTq*xCboDE~ig zeeUrU)lYQ9U zmLRzK{tVjjcOCz%ehc;5dcGBS1qPSU&er>Z|-}y;f-s)Yn znZcnzt%_dvzFgn;NNfLORHjj-83Vs<_ENvb&a*uMljc-m!rjW%+HE4kSraeZg`)4t z5%d6q3ofu}z0N1S0y+%B|6T7muES0jz9GPN4=)vVIdk)etG|D$e!L)BJ<_;`o9RmW zowc2*HtbP_F-`|B7`T%+sPx1owA0S%fTY4o3Tztrq5sC^tLK_E*P5x?{GxDv{Td>Q zewaH=bBPp8M{UWpM;F8UP=^Xv3$P0Gt7o}7*4D{UfqV%JH~KibuKuJ=Eu4qq*t2Q1 zG%4$p0dvgg+gmgfW1s=vB6Cs?TlGyJvwyamZMI;~1QMsG9W3YuOJ(PQHvCj>n6bZ) zZfFkhlXUnqa=pv?AAjsuAp`ES@g_~6e#MT@xpRCw#n=)V>$-f5dm-gb!S|yn)%EYx z6F5JcqYk-A%1OrdZ8pEYc?=Vfh3fX($h8_0wt6|TM8jtTRWZwlxk8QRnO3Y4=6Ar9 zUhn%9%_59e$0f#(ib&fFj>6J3_X>d@C{MOZ91|BpNem{O8*q6929FZrD2a9+(R*x0 zj12Y?;+?~cjtIxmBEUMpu zL}C{~`t^FXsjFw~@Sq@pje9)E3a>d9&oQcf*kGXiq z1N=XM0l)e5Ecc%V2Bm-9{ry{DaCR}ab@;oCFQZbL?hRgEQr|z(YoQSDDI6H`(GZvOP0WA9-Lw$n#)HyEr)U= z9&%+Kw%kB6T;ApT%Th=8EvjBMM78UPlbP2rGBLC3GG4MQXVu=XY%x1`2&RZDJ16L3f+FwSL}r8#L1w>%2E{ zD~vyb>g{#6c6;WSR^nPt zgHKb6PF#a|!+HIABB7;DZJ+gN6Gu#NSV2h{JG2`3(}sphuZtDI%Rja<$e2DNm>A4H z)fu9njv!36_E4gF;Q)}iRqH(Dy&`=X;m{&frR@uax%C>J57eG~Y80xB;yX19wzuq{ zSqg+4qt4Bk#Yl;CW$uW5^JkC-sncB`1VkZo_FQrH-{^i1fwZ#hb2-q8={Lp)h>_QXI}2N3$}zY~l?`ib-#=7Y-6W)?aBJV3O?iA~#n3 zvbJL{@g9cMn?X6;-FwKIJcYvv>3ZTi`-d|7uxTmL&Rrq?_9W|i!xO>lc$@vY>E3eA zDd8E5>!dzdj_1w&ZwijGzMC9+1djXEMVCz)fKq-A8B-cQOw7mZ$*0h;9tkR=ZG5~X zNKDbdIscydPoXbZKW+#TdK8ZAFlb^?m4L)?R@JmE@ z&{khzp1tT=jz6b`cS7M5FG5cSWW;usGz?nhp!hGrD#mt+NBI2q4T;P7SrXGB7}Bb3 z7NPb_4mQsWBzckU=-^w*pk=ye%sVC8-mkyvL&{X%%!R-R5%mwz;eSz*RdsQ){BMl2 zs^k?XTwp@+(eyQjFWpArSO3pFoBm{S?k|oU=FE<0qESjHnWhD#9OCgh*~r+@;qChq|5o>Vvhg$_`<#u ztQPY@{dPMlqTVAsW)LlN@68jvqy4yt%iiE%0z$xDxJMi!1+6`QTOFdNF@DF@&PTMz z6y0`O{daFrKxKe5L`Xxkam3Uinj9_D{#VTE%L93I&+*b)BU&nlHQn{49eHK{iroHb zr~U@H2P{#dRnAEyK4V23_|w^9)2}kDs3Fb@Im2^ux~r2XPmUYRPxYDbt#f8^#$>j< zErkZt^>Y#|)>Grl8qD0rM;asSHv?a@YkommFFNS;QBw@*4K+9gSY%Qu5>go4q9}?K zp_{v;9MD0!g%hL58v@sGksXqEn1;5PM1~%$(ATpzyi}sR8W09@CM;EDjw^sG!S1uI zCi60hX+oedkJS*tmrzz?X={p2Q$$mDB)SjXeH#HXdq+8=3a{=1Nh73RQGUfW+O%ke z)7_HwrC>F>e+FEuDj9G^A9NYqVTsyJC8bHE32+QLO_B5lyM&FoL`f)veYmxrYl6vv z9I<^NjfPHTc6&NIY_;@4g;BDx&!mH@#A4>mjcM=n2~7!w0{-^^i)1c!Q==ghy#?mB zUtgn<6Eq(+wpi;^Y8H{iReIKNs&{exmL*#_DFzNdUmZ}{hj=(=8jCKRCGO*J_Ze&H zX34H;{4h>P&CM)M=rfy~vVTk;V~kEuoom{&@_+=xk+>4k7uamf-{IMuxn!`L$5wTd zUZ=ZbE@E*dmbh+GAhz4ZC|PGXBy|h1rdK8?191o#z0tsMF*%HCL04| zNjARl61Hy7Pe)ufxx$8d@FLAaq z2kEV`F14Gz<=>Y(q_ys0QA8_fi)%L5-Lk-RO)0GU(JPaB<;8YUypEp&w^74kTzOhM z-og1Dhh*LQoI`w6L2N7?6>vx>f?4DvPou!m`TIy0Q1q9nmqEd^nZUx}SY~5BA5TGn z6H~(sAtQBG{j8apZwV42?H7g?2eEv>BM*uxJ%H(RRFqwh?Wg|f(GBI6-~>9@F z-hx7DQtUMli**plPm2Cu=zj!%bYbm9?<^<*Tp`6@Yv5O3=4Yn(ZkhhIOm1WeI;7 zi}r2>5&U^COzp8WsHh0uicVoo5i}GB*fGQLp+y>`vr`s7B&qHn^90u(^}@P;GX@Kq z(vnR^;4bAfr7904-ZA*6BhME6LuSmkLK)CxFt)7$!?09aa#=4x{0t^Q>|285_Zo@x zjkg17$TVyWEq`T>e})i-LD)9xin8iOwjb+~&&QQ<2zb-)+TfA|ZxE(VnQbtK%jAdY z?iOkL_p^CRxMh)zbO@VVyE9O=lSN<$58XY|DXJ{n8?5aTbgc`Z9Wk<5uPrC*q8+# zeUY>-&ufd*joc&|-e_g}_P6@I$HaBIkaIv)sj%Bv%V}ciV&j}bNcmgd?arv#3djtZU1QH~Z zFEqpM^)jk3+lbnuc z{s|^gBtea6rj3M{m;ta4;{hgA&Sk!6v$0%NspoMpKF+=6-pOjd*d_3KW&UYTD?IPB zDxciYbW9qRHaCHp3E(?-6T|f-&*zk7`|Qy6h%scnaN$1C8aSHG?E!Uk`*IIiab+Rh zX1nz0x;Cq1++-octK=429Mk$bV?EtA)1>uGp~@Yt6n;(+M^PfZ>g4fj(uWZ1l<53* zQuju))@t<{z8_7$7tcl^3zRQsKL~cT+rG3pgBFyzmEIryR0kn9)Tcbj&e#8mfvan+ z;WMCj6TefdUT=5P+ENC{Xd-3OuUzDWuQyBPpf6C{SS{DUGnrta9Y4g%CNSA_p^M=) ztg_K{9gRa#a7|i8n6%|tFzB*#oxo$(Kso$@LsuZmUVpCivp75KTB{D<``74Myt=b( zc|}BX8H|hp1jMAvr!#2e)q5|8I(8yM4t&Zb@_=1mJ<{)}wpXBKBL~o;2{W0K0!M=FRnk41w8#=Q1mNemYNBSN= z9p@C$nfFE{6oj-*TM$#<+e~5J%EUdFHR36CJ~WIo2#3ZlQbE!SeO=8kn`U(RX&12y zl#84nj7zqkR<@%0uKQGMppxb>rq6EQ@ZY zpORCirIQ}z1|IgpTpArYA(z}0HpydqFv*Fkm}v{}hv|suDQ>7FGSDbSpl9&RVafAc zrmr9-c;kPyAD$%i`@{njQS9Su2O`i`i<*}TUjj9Z({G+Z0$P^?^PwJ)W-o}_p^`XB z+L7g{c)5y8p7io=#=%ynY9*8TQHY&96A$2j%srAT>r+Nw%$$J9{1%lNE|hqTh<{7p z+~BdJ*`)IYCusqm{`?_r~{@!XggCVh}Vwrs!z(V$;Gi> zGJ-8``PwU*d8)~{m^B~lz)-Q9Pcj%ypf!|xrvEj%y+si=&5$W~OWY!K`$A;p4QBPl zX9&2T)At^vBSX%OkiX3Yf+{o%suW*wo$^tbgkxGZ#$IpIAcBXT;*wMPF*N6N|HF9oce8(=Sbo@EA*A4~{+xwnEf2_*Z`#3VVFhJFqqS7 z8(&289T2|6R4S=3Bj%VL<}Gign8PzfqrkLoF(VozlpwbzGeZ=_3NFpYc!?FY^C+5# zQWHEy?$f$cvZ5&)oGQNPNjn=QVQ<9{(7K1JWz{k{+E(r@T)M-k zw7N-Y)PbWbn*ZoKd(4L} zF7_|I6%pVxyuX&Cl8Ko*n>blI{QDTZqQn)uIVGeJzyF7_a|#kA3bt(9wr$(CZQHhO z+wQ(?+qP}nzHQ8XZzd+*%*Wufek!6e;#8d6xpMEZ$fiuX3nA%30ZT$hbYN3^$k3vw zc?Bw0M0A3K61B^u^~4(j4~*Ra=md*|_I*GPis9)<$%-op2)ol9W@htQ_Fs!f z0BDbl0ZJWd;gP>EnWAj$>)R&I(KEJjyN1r`GrVlllH2k{6oiHw-lyD0a5;|tdygb0c-eX@Em^%s zQVP_H6Lx=!n6PW@R+vdq-nFR(Wp6dlneqXmt%|oqxzn!J0dDmojPd# zxl5Xc$p&IU9l}s#3=u>HwsFFcF%lJe_$^6iKtNM+k@Kbd5jGuEzi0y?K{)cWKsVNF zI1O^8(5N8RYDy^oUNRXwe-8YDs$t$#m(aRKV6<(8)y%dguAOO1oF6^1rP!1xiaj=0 zG|Rb0Q3~h|Ywr$f{sQrJf)svKj+wa1NSVq=%RhiQLFFD{43reO#t=f{9*v2_4W2X_ zD|c)-GDAx7#6t&C$yMvkobM(0TM=DUue^&gSCJdC&lwqxtwX28#$RgD6fS|wnq>Gd zT_B{Jm@3Atv9n(afaU^Q;@Fi0 z!grHgfXw33Fo73{(L3PY;_YBVLX^o+^o3aPvaFc;{We2^FPni zfA^BC(eyP?UUU83`6S`h^fRzY7zl_31a73cUPk~X6X+LUV01&mhDb0;JTWIuAXQI- zZPp~fba@Y`)y%d{NeLs(PA=WZna5Jh0??NJNMxH>wYyoYxmcyOZZflObJgve>yS^& zH#NLg_btZbArAYAS?8&SKxR%I5tHW?$mDI zA&M7_7e9s;Mpt%WR7D3hDasHNLiU7nY6=h)O;!nx9;t*08MK^0Lq zTu?2!pyHY~Xr{-EBcUQ{P+%}pW2ssL6S6mN7BGD3HSn(|Ln5)1VxE|?=0=gdWlcUv z2)HVBV9C*uUVWo-hv2|6&Mg%Xbmp*Xeg6B;_29)oJcL11>M_oMXL`@Fgt&uUhRbgH zL};`bYpOYmW@$Xma>vZ6cmwr1nxsZF5VKcm%D_yviNVwe=Fb{?S^}?w=pu+{2MB7? zx6>(S(Jkk$_y zMEjd{^RT2U+l*F|9HeYuWll6vFb5Ro+I7)IEtYlTIK8R+i=F|K#TewOCVq?yVy3y$ zV8SML%+lp^qqP1>$jr>8a&7YAO%_4RSqAY0piPlbKE?^o69==cLEaujXA<<7Ewt;K zmb0_k*Nl9~&f*(($%$#ksPL&YSt~|l$u7zFkS1T!Ykg$s2@R~;tw>TUAy3mhxK5VAEGTD6mvOfO~Ixwm79EieOE##~qiO zIYYz4*B8yW)K4_RnH-ADGAvX|LDM<*&Sj*ltLU3uGcvcau4W%VZLtb8oATS5y3|q5+bTGV37Nht8?h4NI{> z-jtMYO-aSEn^TQ$@{DG3(Q9N4lVW9ZIcxpK7Hi>Z`pwMxrOs-}Knx#bY75VMFu!Fe znsGhbNK*DDpe~8OBQ`M0(T+5WKqhZjDk82s z+9D4gH1=T}#x;R(ia+2&ofOOnqkO=hh>Qrrb%C#hwb7nnA0i!rWeynx&rfGQVR0B7 zlhERr?lLq5;C$l<2Y5!?LomG61gE|z`64N@!^MlJ1;AET^TK(KB{ml(eNvCHj* zs}W#j1o2PPq#tc}oq@3C(I?^*?>ttFm3siQ@_Yf!f1zQ&= zlx6(U9XT`f`pSG*6T#?&u#Vvt3!>SCnLTuHw^dO?dk@Y zk(I3?s%4_8<|3-vMU_n=m~YZBmqulTw6q9?dGwo4H>N){B%bSv1O6u{O0Df zy{`CFxy8PQbqa3 z);MM_n{8%X{78+_5OIejTREzDuA2Z;)x5nnv2`^w+hOKz)Mz`y?Sn7HB-=323GGg{ z0tQ~U6A2gYx<*k9@sY>&B-tuJElG)qPdal3a;7shISq|AQ*h{69pqn6vRJxXrQ^QE z6J?V(2#%)PcNx{`rm_wj(p{_zU34PV1jL=s4~9QHc*^PCId3_PbMp3I4)X=EjCp$+ z$}we6+naRC-X4-UI$LUT67)G&sxu-cI60${IQ_&dGoIsNT6?DYPE7Vb$$c^LUafB0 zq^Y8lbxX zB|JP>$j4`#;Xs1+`#L}tP6G0BpIc&fgLdV9IotIVY{+=u&m0ZNaW=JF5KS~h&PVmU z&K_!rXboz$0C6bKgP+l&_Wso8ib$%*Ggc}&m{(l}0xu|5dYxyhF0`0dS9Z&rR$P)x zb#9qdW#tBuYp)n8xtgR@f+R_y>V`%Hfo@CMgDbyPDUI7}Vo3~OOeZ~oRQ$9j9kp3F z0)VFmg25epOSJ~VBalQchJIS84&7CTShVA3E7bj?Z?AM@HPWg+t3;rb#g;Yk;3!o` z&?LoD^VC??t`nOzlI!KX(BG;~OBq@Q6c07BhO*ZpzhVCvb%^FEDkeOX0>JMJis}}8 zEk=l|`*Av9+6n|MUxe;|9i>0YU9a_+vR#m<6j3m^(f~qr!1ZKVb`w5dsUsx%$vy$ z$&N>f(Nx)x6`F=X93%avKfcu(VSEY9H}NLdb_ML%Cx;p{lWD)LGdAjCy;oFb{82}i z724wI){<&X==|YyevUIqCmGtUUFS1e8e{*cjtA}ueu&rT3|~BF5V^x`(CHmj6)!l` zZsBj?jJBp>MHRk~_vhM1y;bvlR2fnaz#-su^!Auga>klr#P*O-G&}GEDmf!$Ln^Es z(l|@+uzHI!wL2_<%r#f6_Yf$C%3;OB=g!NFt8!@%UDDa~xvvjet)6UkaE8zlIKzfN zzFMTj6NgA+2x&Rt@v9U6Ke0-kqnrFU zQ{u=cN|tBLkq@gLRgW=$Ap8Pcks?<+81jf=!V+fvNq|E`uQlN13yNR7%!b%^%u3Di zKqq}8PCCR=MZHWPbx~ce`j%oup#7OD=Y`DwMY5VJjvIA~a@^-hlXNi94^)Op;|QBl*J`y(8!y+~mX5WB$SHU5byd{HeQmK8(1;0L<(d6-ER;$q))w zyo55M#d3)3k>r3K`3Uoq;!u3_j*{1E#?}yT;=rSS3ITgin!L_)25D2zCev|5N^@*r z)os5imD8;LrBZ5*g#*lCXIn5Bfa^)nKliGcq^7N8#=va2inPF`*E@7bVJ~^aYH= zdpz6|LF#vO2GN|-hCf!*iFy6My~ZTU<*6r?)BIuu{Sv0Wkef%QmV!CszAvELWc@+l z$0`pAKUnKAPkr(f z;Q7O8(e)KJ(Ff8uUZ6dqC-Daf_e2A~5KE`3QTHJ@(I?~$gf}5u>guggy1Z4f z)LBDlE4Q}{O!Ua12dnC(AMFydu*c(+!-BwlcE^65_;K35?Kjr6#0(45s@g)|dv0je zdH+=|hq>2W*SdrAa2@N>Yg_c*+5~LJegrE3WvP>+FnXY*s{2Gq19>a4shNZJ*cna| zzv|B3fyIjsG_~mpV4H+Ii;nwx5rkThQ89odJplRJz0{7Ieov)W>}N@O;x`T4OqsB$ z(kX;4um*Lo5T#HeJ0>$DJ;H-5-HfDS>0Gaq9qp<``C?&uzJ_*KpcY8HNrbb6b`)|t zL^%_`qy->vCH;`17JJr=?VwgADpfT^YRjp&VmEBP3DsR#GrZQK`qpZe8;?JzA}4LO z>q)-TMcSKxy93vqE7u-(S3%@3pZTGyN+d^hW`B@;=~FH9YL|PP^0|^(k-TTB@&T{( zz$^J>eovW|F>6F>3p1)))WubIx{#Wr{u^|>2|YgZ%O`1{nD)%0EwZHz!=@k58jW<# z0e&W`ng`b?8rR9NYnzQ4eGjxTLk*TXu`ykTW9P&5ggxdY3OVhIxTP;BxDbcpcFPrg zv)lxkJeX_Fm~D>5C>1_zu9A#7sB4vlVlhN_9r%F#AEF!7Nq~AU{6B$!;=hUn|NFd& z=l@G|`yU>U|EatE51l~6(`R`F@psm&sc(j!KQ3gdKxjCC5Hd0#Ab@}bfm29ikdR;# ze=5Gd^B=v84YFwk-%V9h)6%lO)QV_(c+vKe-qm`eVNM#S^1HKHbFh_6LBEe5NksVQuk?EM^aC;K}fdE@p4*4fuy* z23qKa9NYQ9d|{t{(OWUAPwI)?^2hD~AMJ-S`c3Q8Pg<)(4L4c%Ad7&RJ=m7H(N$;%wD947}--R4fC*Ol#M;CTD|Rb zP-ItzQ%YI242i9Ss}ZQ4!;I*zmWU)^G*=tw^L9`E6eA9Lz|xDb3aKn5$~E4GL~=sw z+IgwVIyXCKqDQ)QG#o}#A6eEdNh6J-39;QtdyA6LNMFX9i;m{xKN=^y87J!_-mos_?s;zf zvcT2m?$PM}=L$zLw(jMSZ?tA2h?!(^H`ux;$1zcMLVR6=vG(1-9)r`GsLom zv%&rS#hSAhU2ZOOF>&-G?bgwlcVj4BdJc^`=n$MT%G$NdlF#|U=Xm$2qHKQm zz*IDr4P8r`4d-e0;39wnlce_QK&H)90>>QVL^|qE(ZNn+vGIHP^}7PeMMX2-B4iFj zi^P}Q>rFJmx_2Q9Go&(<`WEuVs))SL*kcc3oi>W$BZL0S960a# z(f-a`K`{0`7F&`5E0kLCZci{E&t(DpSVjyT6H3Pm;>#zlPJ9pAjH3nJ?WuKFLV1Vz znH*%5qFL1nC9CeuJWppvtWvI=3N`-yw2#r2)(S7BY`s93T+54I3-+Gk%u6+!=4N52 zOQdkLh=r-^U$BwniApHH2H|uj*j=(MUv@kf3&>kH3rg0r^5T|ls%P4eM_Wx_4r%)x zvy=vlOyQ}DmBJ~DP>er&2f|&G1AN!+7OZfb%cE$etjo9aC(CjfzF-G(<=9>Z+#Vq< z{jrDL4U?WqTCAt5y3}Ds!lPytr8M?|Mo1#oxZSh#)XFBgfiy!`$$z~NnVGQTI|*#? zY5`8E0$R_Z!dDMi;dT`e9)m|t8V#WqeE1k~;dUvI#7s#us9H=jfKamG{d0$_s;iEfuJ)Vz1z{0Z1}!phhG28g7jK+i!S37 zE+0enDfWSdSs%ykFd9Aw?q$K(;-i`a(8ciGZ-I0(!EblVs^w;ajNBkUSs^l~BVw}} z6${!-6R=qgi~Z)BFQmfRmeRs`Id+M02A|38?vy~&B5QKKlJC)QBTu-g)7U&cnZ~9| zb>w!;6@4)|=rjZw92J!3IEf5pqN@lh-c(74Ka)%>MLd2^+Yo$QR? zRU~Zf+>CTA-9!DAxxJx@$KMTVmF39A@L5j3MYsl1hT)rGqq?|Cwi}+3u*X=$rXy}< zq1~q8$)2fBP7 z*1ZtxS-f@az<58Exgu)!& z&e@25vXSTn-rd0yf7tu6)hqtd9kZ^R99W@fb@I}qZW;blBCsaz3?Sv8$0HxmqYqGH z7$8tE;DZQ2o+{uWYaBr04!Avi4fHY?>=JENU8d!pVp85vg%sOm_*5?iUo65L!`tLD zrbyZqc8rlKA{oQCq#tB&Sj0!0QlYGn8Hz^5jeG@J6-dStk1quN$xo!>Ge#*oQ$FFk z)62FnY7mw$yGbzn;ZF69jjt$3xgO5Eh;;lsSOZqHUQb11C2KOAl((j;V7E@u5~euq zann~^(G$lwBG?$y9h|}Ki81EiO(Go9^{a{}I{P2XBI!@W4(rRI{c+~NEX;N0v=lBm z#>g4qwQ6@9WT1MFLWbJXp{Gt%C3<{}lX%9cpjr>FjI#L-r~-O*Wk!K-%FYuyM^6#r z)Hp8&$7MlMTcRkT2x?dGZ#(-ag^_MCdkW*IH-_<6nGU8rFXImgu11*-h6>n6`QG(+ zx#36|T1Kwb|mcuY)-wZuX z^Xg(8#b2qoa;VkZbMc{|#iWkHA&#m_7oBoD9Sb$pdPA@=d44k-2t@hZ_SZjWl~PTg zmBzV(=!GGt{iPikvgk)PS@Bhtj9eE=E)QM5Vn4fLv{rZ2&w5PW{23dc12L)aSk&nb zNS_>aU<;8IZy@;PN;*?NUnJh_!)#s<;;|=d6jtRHmepsm?6y=AN-m&PZFFN_CzF8+ zJ%Xr{u~4Q;h}af$B(>0QB#dvD#qISa@XYT^;hNiz%}Hart$(Mh*CVTmEtvC9YA__X z7}9D-O}tP`6SE~<(a4SrUD2b)2Tb_m5mm5EWJdFDwx(PmlxgVo;Z9%ld?o`}nEy39mM3QzP4|;ZMz2)BMyc>LXfoO4o zH(UI4O3Ac^Q5jfp&bgtT&X_VkKWz1SU?`h?Pl`i3cVW^0Q~VCB z(Vl5v&}iH)V(E+$9b(Zyrd1Mw2D`5$+&qjxi&|tR+pK~}iz^UKsAU$B_F1MCddD=g zR{5p{UO$LX!y;1krCb$SC;L>R=2Hb;KZ?+TT{QKrY#n+BHPfc{P=njgCA@4HvHDrY z2C*kL(Mv*!uk$Oa{ zHIX`E2XF*N5pLKxa#3#9xU$GD02k~6oiGY&ku|HL3Zf{uLoQ(yB@yQrXG2FQG5j+C z{&Kt_h%ZjlIr6%Q_*=&h!fk;bj|}_~%HIP|uCVlTj+J?0mUz5BRp(171!L!QT$14z zP0yfSIeG=;Kt~r7{X$+;^&xo^qpk%T!>%0l0ZW;~t{Oj_r>vYNH>U}zkN<)fZGkB^ zro|~dVE)8cG!w3Q64cRn_|Ilm4419QVjMO(0mYxF43RTWJYb1VoJpsbkoF`sbq;Gd z+E&w5azh~JVUfH9O`wyC@Nb-O3|3_EF zQ0M-64FdphPxyc8su=zsyQ=?+?(zN?bZ?RJ5flYpw5&)tTqht6V~T5bPs&?}Bh;XheLC%oSb8hn&=_9#VOVN_Urb}G5U6JWDG=*4qIJkG z6+}#B30$Xl7V0Er%yc6q4$+!KsFTf)LP@oc&O*lBTWlTd-=f)9)AOu@{7t(~|0DGO zC{J0wrR%`Ik4ODqNRR)$>7@L>mFK_KrAJpgd28I&Z>&z>9NcjdCl0r-#KcmE_-2yY z{Em3+q`g&%V4Y+O7)XbO0VQ|yH_!P78erB`J-cT3FhStR<+a1-Y!ST9ZKt<$R_{ip zAK)ff8Ni+Hd#=3 zLdVM^c;On@=54Ni6rHoptlO*ZsWmfP!D9?7ub^_PCv6OhT@9o)H$deR@uijbdp(ry zqP9D`3rThI9B!H_E0AG(>sS-QO3{rh4B#GAc7k*$Ls7K)y12E>>q~q3{uFAd1Ek(t z%ed8e)nq=Sx46&*zeDmmF=@mZ+EKt6X6rwY1Hd) zwp-7Cz1+S>{YSU-bq8?acRJa?mFr}6fp(g%=J*dAQB{95pZ^-vVMP#Bb=!TwwtoWIQ^f|vOhC-OJd+FW8SL)wUX07RTU;W>annXgHhHzIwEEDPmqX%&E%j0ScF z?9dAQ_2s~Yfok>nq(~13^cy`LWv?2|Pdxmgru5H2U0Pf~X94+PC%A_^s!9vCoGkmg zlifSr!?E@S`8Ns}xW4-ZUcH(ELn)uIj}ztAY9y!m?#jM1Tf5VGGKS|udA^VB0&abS zgAsmB2@T&$w^9hebSwL^RqQ)|toOR3q1jU}`=VaD$@-f=o9r4I#T{H2*fV{lsjw*m zT=`Ydqqzi6FZ-f*`yo6Ca&L~NeI^lGL^*mej~9%(-8{ob&&0o^yN0W$r~8d;r_tFf z7UKYltp93ycCKxL>&{wC_>^tGcSgq+ECRdPP1N`*s!e1-(S_Fv=dZ$@r7qfY1L#2G zoIoy3=3`RKYyjGBneRT+4*)Owx3@jm+a?`*Ua9nt_=1D=FhaX0U9g}*=sxnL4VL}V zT8KIn5C+4VcNf^IM(!hWBTZtG#w!pZaF&DogsGs;1}iKB5Z?e}COu9~Z>(Wr0AYXu zb)dL|xLRfrXip+0VS?x>-Gei*~R zS5S%(H2*YHL7(wv>T85i&j@lL>gw!8-Gl2i2odwZwZ<(%^ZmHg8r_9iByc>cCCm_; z2nPU`7SQr5G=*GR(87gMvvQZM)SJyBUQrq#=H)TK`kAZJDSCQKN&`!$HtP>7*!T+E zYK`o+08_`k&Roz_M3b1$7A6OIyFh)w_(65>{y!24Gzhg=w5+@sYzA9s-XPJLT}`Mo z+Ijv9I0u_5H4Lv=ID~v`8=t zr}LZ|Rs`nK)Dcg=0n$=I17^XZfeg0?3XsqVHp2$(A-I7zbu))x|TZE*DXUi)-Hyn8hhrGxo<(j^Cd zf206n#lQXF+6GF2L!VwHv%$yKS&>db)2ql+Qi0@t*-tIX?b|3^HxisO|%6L|9*}r)|lPx+zRZsr&0f7 zC_Rt11!r^AH=RYcz>S8*LYV0L;4>T;wjB_`LT>!nvvbR}3D#+=cP;383Y#$B8NHrF zjBA|u6tpypx})y)Wi=X(p@J9Fz>{eX_GI3X8$vb9~(^b+_%T4_`aY-B%Sh z{iKYNI`}$nautw1Ax#_;NCc|0--iaF0SBq`T}e5*mvh!=Yz#Fgrv=)}T*y&jm6Shf(|)(D}Z1l2%P;lz_aK*;9Nq=ZJP z|89b$AxW3D@v5kNz}tZ|?k<}QK|9r&yojm9fNTR|`(OT!Np_r1Te13F}<@z+T9Zy3Ty z>B0;;{89%P3hpF^Q#%nbScMO)&3z3cyeW7Dabib6XKlS|cPxA%+2-~>OYkJWrzKsb zA;2&-M{s|duBgLb+@cUQW9ma6wtg^fC}4uAH-#CveezK2m;iz(zWLPtdxl^iV+mkSyYvH@xHFy$eKXzG9Hq3N_lx48nvmmh6>@O12_`cX(Wn`UbneH3yTHlGs;GsrMF0W)nvDUr135vnch=j5 z>6%z`7~%O8y5$p7r8{~xUfMOeKTecS?N+b^@aDBHdZY)&Oe_gck{31P)Z5K`;YWw^;WIgQEBG-k7fD-7|?3_i3uuC4<{AZTK~4xrb~G- zEPEY=jr%#qpkGQUSa&a;`Yc&yv;$!dvW6YyO9IDh0P%n;&T=d-_btQNq3}7<&S7%R z%Lu^R5$r5$0=!&)h8Jm@*bQPSGn$7KEM?OI1>&vYxTE$GVHy7R*k)(-;ImbiwCwN6H>68=DQ-WCJi6I7)DP-;Gl_9~aU%045iwZL!s~Ur7+d;hSZ_ zU{JqZ$AC{HvEr4Jn}8Q_<1j8c74^jxj1wFcN=9p^z#u1~rE~f>3EZ3uKtO5SMkJCN zMfvDwBFrr-3_z~wpk8lUYfv8yhzuv6looPe{j>eSyfW%)!=Royt1iz8W4oji`Ouj5 zq)1zJ@I!*QQ5#OwGBI;9?fovrbW8RNWF=xBHu1;G$C5xmem6xf&z@W?ykVTQ>s21kKg(A-P4_iHqi)djSA4VjCVbMfq#`l7pq6b8+sEdIfq+Fg1@ep#b{S5HyLuh4!NfHUpH9{&Mu_3EL&7(|a3$`f>MZD+9)J->MUE z-@tMPF3{J2ndNtQd=$l42;CbC=1FpS=Y&irC)LhNw|KY2nZ-ae5`#N45iR}5^Unhq zu9V#dz=pxxB#HwTZ61G{{5m1Md}`xX-aXNZMdnC^%HzQvWt5=_R*YbSGK>+uXCFs- z7WuZto90S~p$T*QF&f>@i(|v1sN~Q%&pUt;KZ%Q1Jj;{cG4dE;={QQ9OYE9ogxsvm zcoV!&P)&3vTBtKXLGzB-Z`%-#|F@9_96`~u-%O+CUVH-UU|Md37jpwE3hsy8+K2Gq zVKe8lEXwy(JWZFhpc>$}u+J3{2dj)h7b^kw^;mL~UE;&2L_CKvy3`(#8m5jOe&wzK zL4af%j===*Eh@27*h1+ZI|4+UA3BZlVUz+_*ha+V8qr@$E(*fzazQCKtugbxUW^XA z-`35XORRCdR1PxzZ+8i-lnR5c;sI3!=!&VqdAxp3g*2#yKadVH?in&=Vy@60Q2RdG zQs;PJl~4MWH-DR)y02`>Pww*@>v)Lk8%sH&eyX_h3tPq|>Tbl96f{Tzio?+s5UkM( z4!cI#6V+1HaE2l>|17C{ECaz*EV>fLDvp=a5mgXEJF;G@EtdRbiU!8zLFLYxt_+fmoyN(mZxT+{M>SCnd z^MSA}(OrnqA#%}7xxj_r!Lj(6Pdua9tcb-C(FlyrK^vqh@L;6(j|dDnLw|MuYebk1 zU;d1FNQ60hQ*^tQnMpH+PhBYCF=kV{0t~gA)B^e6&>(F%{r=@fL#t5w(_~Or9HjtH z`h4>>4vc%q=}m(IdE=El=^b+NwO>H)Cm!SnXbJyeE}qQieEU7Wht6N9CP?fD5N+~@ zLQr+4$9sebki!)+ZR7zjLM<^!3qsECzhcfNcxYOsaqx3aNSg2iH|SDcA%09h;} z!rwWR{w8w?5uu@XfMC4kXT&gPayHiCfENOgG}Eyhvd(xhCn%JQsHn9#9bx=|$Z2m4 zosRQ{AQ)M~hSUQhYA6}!z$O*iF+AZ!um`foyp*}t;Ad)noC;_}$@G@6p@STNeT$F5 z{1VKdBESO-n-NZD#)1;;;p4A~vKpj&V!;7oGp+N9j19J&fMW@3%dVwzIQd6ca}tnK zK2n7Kia}&p`d2(5h3) zb%E%3R9hBq`2*TC+|{vBu&n zkeCOspr(9+*yH=t;z)cR#yFNNgB97ZYTMjc>xOZ_RqsR2&*cD=G}`W>Sb1>rx)4Sh zj_7za(sM7v4px)CjBMw^1bS4NJ_nkeG)GpAF&IMB6G7v~1 z<&;B1j~Y^t2=J`qfau%Sg`lYmFQzU`5XX$gWiZj1Avj`R#z>FMBqrw>q+?^qSxT-A zIWJ;CYlT|;ydXk?^w~HBNN4m3ke)7xVxaJ&9p9nWVoWF`EB(39=ia(=A9XFk z+@R#G{m5D>eE0xXC>Zsfj2xcvcgu|7pu7|;3~BMEJjwXxeRAei*6?F@V%>kw9vwYC z=SR{7hqucV51waPra$i}#lA|}eDX-1^&=9B@|+jQkf?ds;j}-Q(Cybuh$%Q}>}QuA zPum~H;j-f_8NF$A9Dj*<2VVhKC@h>nG8Iz-K7eNdFfxs~^Fuxdc9zvgZ z@Lh@x1YE=5*Y_8Aof@gefTl05n)52!;EzgH-a7a9wHy_+;1JxAT1x-%vM3re?Kh`& zTXPX{Q3VD3!cw=(!}Q+X^WRblZdb_8iZj9+rx(E>Smo;&msl=ZJ&u`(|U;9 z)6fJ-eHM#DCG#y65~ubDfkb7^G;v-u8no!PfoEGVqJ&QB$Ko)+pYM&6!?IeZ4HLE4 z^yxx0>!w-mHRzOupCt*uRyvKStn-z`qU6;HlaXe2b)Cc3hP-@|{AFQ%UpxHX|*+zLK`<{RYfC1v}2lxHj4a(e(%08iC|RLq~$d<-GR@m*A= zBo+(zPBXIZHy0dT&-G`NTabooNUH_IKODIuK}*_h7V#BpKo+h@7zc9KwV|k%jLsX1 zEVsG&Oiw<<_b|k*)_{h!r;d_z2 z@<6E}CL17-ilQ>Hi+gV>5p)p_q(G>TKo~YQ?kJh~vVR$dmI%ZLiQM z391j^x)KMvdG>z8{2_ELOpKBWlEc0;;**)v=J)}b9Y%;1o73xug*8jQ1!BRIkxNw^ z?q>cgMNnLue1iV5y~GfrMIgcml!tfq(L){`{T#mRA}b+oi3*QogdUq{h`^FPE-oTe zxSCIW;O10Ji8(iah%a~qKY5Dn@1`c_=2J%3jy;QAY6{5N=UY$!zY8)@s}pa{6G zjHbWMRXU{LgRsSMu{)!!C6DN;Xj)J<{f`Fi_wn}uaw7JgIGM^s2X_pv-^;0OuN^H7 zq|=|%Z77(uleT>S_xCOM>Bn|QjgMLKnPTLM#aQkT+Qx*UlC;nfTqa0X3hRNRL`w06 z4)3WyN|rh#(14yvGS?5^^qmknx5hVf3R1(QHKE>9J-(51`^FHndzU%^+rHp?M|09_ zK0oYiV1bERAe0{8i#{x-dzp7$#IQ~RchVvaAa}*LKV!8WC9%{w>lXok4MTr=nNxm; zLkkMPvLYG9=LS-AX=-$)m;0^yk!Bu7Pih@3o(2#mDADHH+WYH-bAE&HK-_MP%fRd^ zCx&5{-~_Du2A3+}u;p@~fd?XxJRg|zbaVQA$i$yt#YSO)6&6^qm-6?2wZYpP9F3wZ zJHGd<_Q+U5T|DqABbyJJ))3{dKCe|nKQiX7b#O(cp=O<>{ZaG{1d1HVOm2j_xqcBj zWrtR1tFCDpt1QhITLC#Y$5aCw^6)4W2$_mCoUIu~<7-S5tF>~P@7SQ{Y=xEw<7IfJ zY4vE_m*K-n!visG0Xv#dPLiG(&Y<67d|xuW%2@ZCfnH=lc$e2$xTdF(C{oS12;4EL zS6V6_D>*Rr^#X1bj*cPM9@zIr#cF5{)Lhrcmd;Pxq-E*Z5=mzJ`Ww+W+12av0w9GR-P+gqWs zQ??Pdqi$vsO|RAb6&;$DHx_U?jU-cbppc__B~b-2W`rECQUg*$MC8c<>tHJ}NW7>n zqW3(8b+auLp3|A$6R8Ps0~3Jd2ihV;a4478TvRm0Gy20K;Kx!`5_%t6Le$l&fek>$ z`RC>z8e<&4v53k+jnPS639^Fjy3H9)e|b1P7krI7J4GD!$iY5qxMAiA?S+CJdFb+; z=;tb6vma*DpB~7mAXVnL9Ezv^Dj5Y=dVL&uj?lkjjqJ-ve-BHgVRsnj1Om~#x5mdA zn=4Siq#^Sg8b8M0&J($vj0^LuSc86P3iEVlOXEuSyVDPl1P~l+Me^VidGPD1rl$5B zVLyiSL3kg?y9B$O%JO#N;kIqu>fu3mjHN2;oNm|!CBtnW?%9Umo-vxA!rMhzVW@^z zp%oNWZcpm^ViNJeA(1-=GCcIeTF&5uDR#B`N8|vEpAg~1Tgibf#QY6b-hs*Rjklu6 zWAxnW+@}FD0LX|0bbxUF01p#m^qXxlFh;E1p#*f50~+H!78kf3qp#l>Cmp|g#uy>( z_mrO!?j9&Ov?i5mg<$AdD#{{%JRyz2nKocK4zE|-GGaOOtn1Bs2Hh$sc+21&N!7-c zq|y+_L7)E*-b|R8rXZ>##rKGoM(;!6=&~tXBvTC+ErS|Wep3lJI(p~$q%Ag0w&q_} z2zs4Ae|eN6*($Cl4$1s`jYTY2Z(+NnjUa>1#EijU5~-<%kSJ1|azSodoIU z3_jh;+j}ECQ|6G2i^-t&jwh^*tDnlu&4!DSr?eFi(OQW(`viKgN>rYTaEo*ww|w0J6xwbt|ELpNIg%DvfgeY4g(pU`NzEZK^R$i9SZ2}wnECHpQR|2x(HGgCe@zU%3EUeD8ee(&#`bI*J3b>DLs z2pWdf)nzxCz}qtvSw!&ThCH1a!4^kckM>PPUbk7Md!@3czZTx>dkxZ ziB~Suq%@(BvaEQiz!DnnV{fNRpez_hu9oYqUJS9~OzhT+2tc?mYZ z7B-ErV{4-`l9L8Ya_tYfk4aj14?yQQ)K0g)q2Rn>NW-ti-BfT_^4Y@7l}LZfPjVkm zJJ#i#YP)d8%TUC)+AN*(${75WG`cm=|KZvo{YdN*& zWjQ(#dea3*``3t0+H2>>?~!WLq@Nw6mHRAH@pzc7Z%^;+mnqj22!*QYRKB7WWZ>Cb zLsi3M`C6_oJHsdo%$1D@6r^P1v&1b<6~U}WJ<|jav1mS`=C)WJ95K3C(KjU zc3jf!L-PGQ?*o%UXJ48g@H*8anO8DBvLK^27eckatmBdX%dTN(j*o&Nl&SCR8nqQ` zJhNd5vUm_E?gej!bkRl>2h#(B3$S zNB14%Z);@jtFr%Ib+Lo!Lj)Wutdx`9TK_b>T17}xSHlJq1N5Muj}T@Q~7)suB~Y`OL* zTS!@Fmrlf6thHF%g*{$J>%qdd%J_NDR%X25w5HfY1fsU&I_cNhBGw|W}X}n zct8s$b{evI&~2EPDfd40k>HGzx0FJQ`CwwUPs_EmC$HyP!iC;4Sa2>Qt`GWVderLg zF78}2vh17F$#Ha%Qcn_9lpg-X1!sP<5G(nO{Q5FV=cvFXYX3(Nk0*zE0~m;2@Q689 z5q1TX#m^Ch@SOM&qUS5{CS_UU{H}rF4=C=$4_Afj>Uv-6>4);`+;rXbfco6qkS^0P zzM#%pGyStFmoo-q%*n3VHhv>5|JE@21`*h$71&UEv{nCv$T+$9YJExhCy(`om7H~E z=lsFNwO1AvY+{qe3Q6Hn7uw~@0ukg0ZvH!MhNgUJP(D6?YWD8)qwg7QwN%HtZ zZ`(aTD`5S=JN^43=Bjrgd-a77`wE%7KU$LP|rLk3MCq4;i`EaNTu6N z|D140nTUPQ>7=I_Q3YpZAz!KtxMl9Re{+n6GxU5wm_LrBo!5MzFxul%Q}EumoHC1> z*2UHJ(Qu>isWfVBN`HcJ)zzm1h(${E^8pHp304|k;TpXzG0`2gJLVcBjD$Z~Q`{P9>buNSm57gZmb!e1$Q!snI0Emt|6g4n)* zmdS57&-L>2@~9=5%$7t+!#oTV%MDei<9eE|8XD}gPc4zpgV=Uj(U`(>y%kyyxCE0v zZm6Otn^5U4RqdQw>Z6M^E^)DykMS_CCE-YYHAWc3g>Z8>xG!vRsfz}M*jru{S`&Hr zy5k<9iihUu7ME58Cl=$=5pL^`!?UI5*?PoEZkD-pqMD+5Dwu>@2>bo63cN1K5|=Gi zNHB^&l16vrV}M84gx*1<75@}uzUOnu!&2j=8pqX-MrrJW1tR-KETHiA1H+kAW%4u& zT~2G6gt5WT<}8~lyYA)j+ryFHTHUUe?X;0D-KFyVkO0B$r}|z6Cf0fN{GPQ@2R;Vu zxL|r-e7-?@FOlVtxXViOnVypnjmi|6oi!E78R|D%B5!(sGV=1I65Lm(+?(aku2!;# zHB5#q>E4xcB05U{8xn`&18y7aJ6oog!9i*dfHme>O(@i%9ePt`-|F3^sVX}~{f_IlmR+hG@sSYDZ-YveI#7q@2{U#^#88dayLQEK1IT5^Z~#SMLT zl563%-fpgvr3vBA-d^Qp&BXes-V?DPVIR)^L^|T8Z171)H|bR@adQ*3)BJUcA1U-DCXtux z?(;)sIAx?rV?~wfawVB2(vf;*s8VD7Bb9M<9oKZkUtJjA`S{W)SN;sLd+J9zJXZ2; z4~v;0zRMS1%+XUy4Rki{Pz^#lHwEQuU4P88oDdXj#ZHr^Ts=`)r)exF9(mfp_Q6$E zIk@fmo|95(AI{ylVz9g44Cys(#yfhtd$xD&Q_=MFr&~LUFBgvU+?vWT&38I;#W{ab zRV`SmZG3gFr6P#z;sh&2)G0P>|MB zk1W1cVFS1rcm3n_wMp(}PD_8!uS6V&UKW2zaG!K}J5tT`4T3ZmX-;LRwn$Z#Y&fz| zWC-PD@`RVCrNLW74P%NjPg2C`SSJU&4WYt`eJSISq0f9m`Z+zmf19zNpSkE@N1P~7 ztJ^u)m{>Vf^gWZ;xcA-kJ6P}#tV2cDbgaEJJ|&d7d{krQ(rg!%i(9%2XQkmoh99J* zR?jmc`?5~y)a-3l@j~HDN?^V_;EG$UUcs6_DY z$stfa)AESO{>9wLChbr3`4;ueZM*@`W3Fm-6p6>>A@^mfH1Cf27@bdO(2*_2w35~3 ze_G{UR%(NlGD%?7xjS0op-m>%^RVGU3mwaA>l_16zn;udG7-b!;JbWBXAdJpCo>Fp zUC7On7hK8{xtDBba5Ppkip_9`I-Q$>L8%szuSP0UbcZ~Jwt|lf5$cAOsE0bmH8Z75 z70X2t&+iEowbHGK7UE~k2185hZz_{y$n}S$uBhsZe=T!h&kn9-A>?#=s%fdYf4Bfq z-OSo27UvmrTcJz+X+z5svZfG7W<&5Il&oDw$xe>neLC->i6JX}m z@>5g$xOM&R>@6-6YGHVga7?-LN}Lv%l?aJSW(MMkgBwSF9&z_YnutuFqGsj8h}k)D z_1sSseT-d|(UzLy{Y$CeG7c-e}ZSK4NUN{D6D%5{ns z=Vg}oKJ6;PUAx8;h=l{=##W9zKISa5D#>w-GRk~J6o)+Mk=t}1N+%#ASdqV&DD=d6>hF`Al+N~rOo2r+kC}iB# zrQR$h`iH(Ik|i7$oukQBIBqi0%t-_>bo=)!Qa?9tmGL?sc%gzyGs9MeKFD}?ZIB@o ztLACtyov=iw!&M{B*GyNE~%5>t>p8NtBlBqKkcXKZg8t2Ep*nem7V5*jFls^ORTWR z{>YCy;G} zEG(syUxTspNzG1KVrTmn>j0fjK5WvN2|9;ybfkWvaAT_wkm~0 z5l$K3IZ#*p;$@C<(Lt4xKvMbsiQocbRXVnWF2D1sHM2D{o@--4wYnL_CYiiNUyBbb z>8|&?$6Dv-y)G~FB3bL9y3rc%4T2^K=?Qa*VM0)lb_WGIh!X68LO{_%Fs4$quu9T` z>gB%&HDpa5efdvN{dF4@LJEG+w^W3k#-g=0TG)ExCm+%IyzWdZ7m9Xul;+VpQRC(C{v^jNLw5b_FGHk_`lGf3~9iN z6Q44}n9BZ>vLKekGk8k;>v4a158C!bX7$sB!00ic>7C*~!qFE=xP)U!mA{B`us1Pv zkhixtasB