diff --git a/.liquibase/Data_alias/basic/2021.0.0/KeywordMigration/changelog.xml b/.liquibase/Data_alias/basic/2021.0.0/KeywordMigration/changelog.xml new file mode 100644 index 0000000000000000000000000000000000000000..89dbbe1de6912103cd930d998bcae1d29aea8d2f --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.0.0/KeywordMigration/changelog.xml @@ -0,0 +1,6 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <include file="init_keyword_category.xml" relativeToChangelogFile="true"/> + <include file="update_keyword_entry.xml" relativeToChangelogFile="true"/> + <include file="update_keyword_attribute.xml" relativeToChangelogFile="true"/> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2021.0.0/KeywordMigration/init_keyword_category.xml b/.liquibase/Data_alias/basic/2021.0.0/KeywordMigration/init_keyword_category.xml new file mode 100644 index 0000000000000000000000000000000000000000..0e14676a879d4ee2b4ec18efee89baf6a1dd6517 --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.0.0/KeywordMigration/init_keyword_category.xml @@ -0,0 +1,509 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="autogenerated" id="ecc60096-2a99-4e64-9a5c-9d0a18211cf3"> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="1fa14f21-6aad-4bea-9106-7265db39e052"/> + <column name="NAME" value="ADVISER_ROLE"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="a5206aff-79f8-413e-a76d-4cb9d39694d3"/> + <column name="NAME" value="ActivityCategory"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="53a36940-7781-4d62-bf8d-478c6c3511bf"/> + <column name="NAME" value="ActivityDirection"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="1f700fd2-5295-43a9-95ad-e73add4b5086"/> + <column name="NAME" value="AddressType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="ad91fa20-157b-4e57-b9ad-1281e40024b3"/> + <column name="NAME" value="AttributeType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="e685dcfe-cbf9-4a3f-b45f-3f449779a48f"/> + <column name="NAME" value="BulkMailProblem"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="25cb446a-24cd-4ebd-aad2-320da20830da"/> + <column name="NAME" value="BulkMailRecipientStatus"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="76fc02b9-a1b6-4c76-bdd5-a52d0e1ef286"/> + <column name="NAME" value="BulkMailStatus"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="288cd7a1-3cdb-43bc-8832-ffb58e651956"/> + <column name="NAME" value="CallAnswerMode"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="5a49ccc0-bf6b-4842-81d9-78d8841c66a2"/> + <column name="NAME" value="CallDirection"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="9e2ad22e-be5f-4f11-b273-42d7d7b5f946"/> + <column name="NAME" value="CampaignManagementCostCategory"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="43bffa8e-581a-4854-917b-c75e9119921f"/> + <column name="NAME" value="CampaignManagementStates"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="59790e82-72d4-4682-8e4d-df93ccb35c64"/> + <column name="NAME" value="CampaignManagementStepStates"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="14adf8de-aa3a-4c89-99bd-49477c2fa8a6"/> + <column name="NAME" value="ChecklistEntryType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="0e8217d7-6712-4c16-80d4-d5c9c26a4f47"/> + <column name="NAME" value="ClassificationType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="6457580f-aa4c-49d8-a92e-a9255e3dac34"/> + <column name="NAME" value="CommunicationMedium"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="cda60290-b041-450c-8397-6e462c45835f"/> + <column name="NAME" value="CommunicationMediumCampaign"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="8bf2b609-b422-401f-a6c5-7c07107cbb87"/> + <column name="NAME" value="CompetitionState"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="866fd65f-131c-4038-99ce-78606971ec98"/> + <column name="NAME" value="ContactContactrole"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="cda5deac-5b7c-4c98-9904-2eb3b224235d"/> + <column name="NAME" value="ContactDepartment"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="bfc9eb87-0292-4fa1-9c87-39666c2ae6d2"/> + <column name="NAME" value="ContactPosition"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="1f3bde3a-7d74-4335-abd3-561028a1e0c3"/> + <column name="NAME" value="ContactStatus"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="2e785215-4292-40ff-a7bf-d4d0f79a738e"/> + <column name="NAME" value="ContractPayment"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="39d147db-ba80-446b-a80f-d23ef9f71659"/> + <column name="NAME" value="ContractStatus"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="5c7a2307-ae32-4d19-976b-29f8675808fa"/> + <column name="NAME" value="ContractType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="7d329db3-1874-473d-b4e8-56fd4b84054c"/> + <column name="NAME" value="Currency"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="9d1cb7d0-931e-4d5c-a54f-e5c917228157"/> + <column name="NAME" value="DISTRICT_ORIGIN"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="3d8699cb-e0a0-483a-b52d-d5bdfe2ed336"/> + <column name="NAME" value="DSGVODeadline"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="598681d4-5649-4a9d-b918-f35fd69a2b0f"/> + <column name="NAME" value="DSGVOGuarantee"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="0369f43a-e46d-42f7-bfe3-5bc2c7d9d584"/> + <column name="NAME" value="DSGVOPurpose"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="c561d74a-44dc-4b57-acad-055f0f557b6f"/> + <column name="NAME" value="DSGVOStatuoritysource"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="e22ca44f-5d2d-47b6-a844-6801fb6b877f"/> + <column name="NAME" value="DSGVOTransmission"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="18e6262a-80a0-4f71-baeb-36a6937e356a"/> + <column name="NAME" value="DSGVOType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="58ff4cea-10b7-4cf9-b326-81337b5ddd48"/> + <column name="NAME" value="DeliveryTerm"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="f118b0c3-c65f-4c83-8f5a-cb885fa3323a"/> + <column name="NAME" value="DiscussionStatus"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="b5afd40b-bfa7-4aee-89ea-06b8c7deb304"/> + <column name="NAME" value="DocumentTemplateType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="e23c8316-d43a-4606-803e-d4488823cc52"/> + <column name="NAME" value="DocumentTemplateTypeCategory"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="0c4c05b5-8294-441f-84d4-3424f1c38732"/> + <column name="NAME" value="DunningLevel"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="8ef58a64-8905-4d5d-b965-40c7e12a0b1e"/> + <column name="NAME" value="DupStatus"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <column name="NAME" value="ImportFields"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="35d717d5-4260-4a33-8183-a430e3624822"/> + <column name="NAME" value="ImportStatus"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="c1295c26-c580-42b8-85dc-6c08811c812c"/> + <column name="NAME" value="KeywordAttributeType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="37f65755-e1c9-4912-a7d3-2922c754ed8d"/> + <column name="NAME" value="KnowledgePublishLevel"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="6a4a5250-6231-4bf7-8c16-bb5994c4e2d0"/> + <column name="NAME" value="KnowledgeType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="b3765719-9d07-41c4-a813-18bc9056db1a"/> + <column name="NAME" value="MemberRole"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="dbd944bc-0c18-4acc-b4da-2cf382309459"/> + <column name="NAME" value="NotificationPriority"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="50ecc8e7-15e3-4a40-8028-d6de5241b88e"/> + <column name="NAME" value="NotificationState"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="91e847b9-9c35-4e1e-8936-045eb7d4f90a"/> + <column name="NAME" value="OfferProbability"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="3b0a4044-9cfd-4466-9edd-50876a926e76"/> + <column name="NAME" value="OfferStatus"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="38df36cd-2600-4397-a272-0defa1e79e5c"/> + <column name="NAME" value="OrderType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="83ea3621-22d8-403b-a73e-5d63a6dee434"/> + <column name="NAME" value="OrganisationType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="ab8d06bb-18eb-4fbe-9e00-ecb34bd38c8f"/> + <column name="NAME" value="PaymentTerm"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="8653e732-0a48-4697-a858-ce58a524553c"/> + <column name="NAME" value="PermissionAccessType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="e35fdba2-11ba-4d8c-b443-5ab49a19dcc1"/> + <column name="NAME" value="PermissionCalendarType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="dc580c6b-6748-4eea-97fa-9a08776e395f"/> + <column name="NAME" value="PermissionCondType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="e8e138b0-5628-45c5-b0c2-6aa0086b2ae2"/> + <column name="NAME" value="PersonGender"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="e355059f-5b01-4438-8444-334655d6e136"/> + <column name="NAME" value="ProductGroupcode"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="b92db41e-bdbd-4c3c-96ec-b23672f25340"/> + <column name="NAME" value="ProductPricelist"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="cd77dc51-70ee-469c-b0d6-687893237de1"/> + <column name="NAME" value="QuantityUnit"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="13a3d854-4286-4165-be71-dc246f72c100"/> + <column name="NAME" value="SalesorderState"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="923217a2-991e-444a-9a86-c3f56ba90f93"/> + <column name="NAME" value="SalesprojectPhase"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="f5622bfc-35b3-4e74-bb8b-b4cbdcafeb8c"/> + <column name="NAME" value="SalesprojectPricePolitics"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="05fe9872-c1a8-41ab-bf0b-d0df0537fe4f"/> + <column name="NAME" value="SalesprojectProbability"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="0c3addc3-cbe9-4bdf-8db7-a53401b24a22"/> + <column name="NAME" value="SalesprojectSource"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="c0448b78-0e78-4db6-895e-5d0d9952f961"/> + <column name="NAME" value="SalesprojectState"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="fe288fb5-c5e4-4473-b052-809ce32673eb"/> + <column name="NAME" value="SalesprojectStrength"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="54d6ad1d-44a0-479d-b42a-982126572658"/> + <column name="NAME" value="SalesprojectWeakness"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="c8e3bb06-7165-435c-9159-5568158f9616"/> + <column name="NAME" value="SalesprojectWonLost"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="63530dfc-c3e6-447b-b3ed-b52adae42a68"/> + <column name="NAME" value="SerialLetterStatus"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="8efff07c-1853-4040-90c2-e8b343db8d18"/> + <column name="NAME" value="StockWarehouse"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="ec9ac6e2-d2de-4e8e-bfad-bebd38c65026"/> + <column name="NAME" value="TaskPriority"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="5f94376f-18bb-41d5-8be7-f7dce020495c"/> + <column name="NAME" value="TaskProgress"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="6818d2a6-f47a-4d72-a0b2-3fc6fc74fb27"/> + <column name="NAME" value="TaskStatus"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="bb351e6a-c35b-4af6-8540-898b2cd368a4"/> + <column name="NAME" value="TaskType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="f3986324-87ce-485f-8688-c4e228c39fc6"/> + <column name="NAME" value="TicketType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="30d87734-9229-460d-abf4-73ce73466534"/> + <column name="NAME" value="VisitPlanEntryStatus"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="623bdc81-a99b-4865-958e-85abd0ed9b6a"/> + <column name="NAME" value="VisitPlanEntryStatusAppointment"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="f0abc80c-7d9d-4bb5-8d41-d204550a028e"/> + <column name="NAME" value="VisitRecommendationPrioSource"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="7147c61b-962d-426c-84a2-aaa381aeab8b"/> + <column name="NAME" value="VisitRecommendationPriority"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <column name="NAME" value="WorkflowActivityType"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="ecfee92f-0563-44be-98f5-1c304df8d9d0"/> + <column name="NAME" value="WorkflowCategory"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="ed197cdf-bdd1-4e95-b910-dca348abf3be"/> + <column name="NAME" value="WorkflowSignalTrigger"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="380983a1-f0b2-4d0b-b38b-5c889079e414"/> + <column name="NAME" value="WorkflowTrigger"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + <insert tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" value="db283e25-904d-41cb-ac20-3c80c85fa423"/> + <column name="NAME" value="YesNo"/> + <column name="SORTINGBY" valueNumeric="0"/> + <column name="SORTINGDIRECTION" value="ASC"/> + </insert> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2021.0.0/KeywordMigration/update_keyword_attribute.xml b/.liquibase/Data_alias/basic/2021.0.0/KeywordMigration/update_keyword_attribute.xml new file mode 100644 index 0000000000000000000000000000000000000000..7d33beee85f87f9895c14136bd896bcb45511856 --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.0.0/KeywordMigration/update_keyword_attribute.xml @@ -0,0 +1,129 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="autogenerated" id="7a58d5be-9d3d-4ee6-b403-f2dac44d9b60"> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="05fe9872-c1a8-41ab-bf0b-d0df0537fe4f"/> + <where>AB_KEYWORD_ATTRIBUTEID = '2fabbd9a-89d2-49e3-b3aa-1dcbc77252c7'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="91e847b9-9c35-4e1e-8936-045eb7d4f90a"/> + <where>AB_KEYWORD_ATTRIBUTEID = 'b9766994-4e7d-4079-a0bc-f1397f93047f'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="a5206aff-79f8-413e-a76d-4cb9d39694d3"/> + <where>AB_KEYWORD_ATTRIBUTEID = '14c2d515-a42f-4618-b534-7a23369d21e6'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6457580f-aa4c-49d8-a92e-a9255e3dac34"/> + <where>AB_KEYWORD_ATTRIBUTEID = '7250ff28-1d48-41cc-bb36-8c33ace341bb'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6457580f-aa4c-49d8-a92e-a9255e3dac34"/> + <where>AB_KEYWORD_ATTRIBUTEID = '3ea2ea72-e615-4e77-befb-e664fa5ec4e1'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="cda60290-b041-450c-8397-6e462c45835f"/> + <where>AB_KEYWORD_ATTRIBUTEID = '5e65d4a0-af83-4a7b-babb-b1b7af4b9f20'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="cda60290-b041-450c-8397-6e462c45835f"/> + <where>AB_KEYWORD_ATTRIBUTEID = 'd6c0fd72-ded2-4e4d-adf5-f8832d7b24f2'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="1f700fd2-5295-43a9-95ad-e73add4b5086"/> + <where>AB_KEYWORD_ATTRIBUTEID = '1d5c5d49-0ffd-47fb-af10-542f7cf454cd'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="1f700fd2-5295-43a9-95ad-e73add4b5086"/> + <where>AB_KEYWORD_ATTRIBUTEID = 'c4c5352b-ff72-4323-80b9-631a24dd7245'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ec9ac6e2-d2de-4e8e-bfad-bebd38c65026"/> + <where>AB_KEYWORD_ATTRIBUTEID = '6b951c1e-a0fd-4dbf-b139-e7cda94851cf'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ad91fa20-157b-4e57-b9ad-1281e40024b3"/> + <where>AB_KEYWORD_ATTRIBUTEID = '307ecfc6-15c8-4ab9-8afa-e97b90a00c5f'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b3765719-9d07-41c4-a813-18bc9056db1a"/> + <where>AB_KEYWORD_ATTRIBUTEID = '0bdeb691-f90a-4d7e-a99a-08c60816232c'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e23c8316-d43a-4606-803e-d4488823cc52"/> + <where>AB_KEYWORD_ATTRIBUTEID = '14c2d515-a42f-4618-b534-7a23369d2001'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e23c8316-d43a-4606-803e-d4488823cc52"/> + <where>AB_KEYWORD_ATTRIBUTEID = '14c2d515-a42f-4618-b534-7a23369d2002'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e23c8316-d43a-4606-803e-d4488823cc52"/> + <where>AB_KEYWORD_ATTRIBUTEID = '14c2d515-a42f-4618-b534-7a23369d2003'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e23c8316-d43a-4606-803e-d4488823cc52"/> + <where>AB_KEYWORD_ATTRIBUTEID = '14c2d515-a42f-4618-b534-7a23369d2004'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="53a36940-7781-4d62-bf8d-478c6c3511bf"/> + <where>AB_KEYWORD_ATTRIBUTEID = 'e187a585-9ab1-4dd4-a2e9-2db14d4cc3a7'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="0c3addc3-cbe9-4bdf-8db7-a53401b24a22"/> + <where>AB_KEYWORD_ATTRIBUTEID = '4b05ec8a-6964-40e5-8713-0043ca926eb6'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6818d2a6-f47a-4d72-a0b2-3fc6fc74fb27"/> + <where>AB_KEYWORD_ATTRIBUTEID = '472f9bc2-3331-49f9-aba2-72d5eeb89654'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f3986324-87ce-485f-8688-c4e228c39fc6"/> + <where>AB_KEYWORD_ATTRIBUTEID = 'af6a0af9-0102-426b-a1f7-c8abfea79793'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f3986324-87ce-485f-8688-c4e228c39fc6"/> + <where>AB_KEYWORD_ATTRIBUTEID = '6f10015d-b7ee-43aa-99f9-87960ec2e4fd'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f3986324-87ce-485f-8688-c4e228c39fc6"/> + <where>AB_KEYWORD_ATTRIBUTEID = '729a41d1-0463-480d-bf7b-0eb6c2e96f37'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="76fc02b9-a1b6-4c76-bdd5-a52d0e1ef286"/> + <where>AB_KEYWORD_ATTRIBUTEID = 'ec51253e-9b45-468d-aafa-42331e54f32b'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="923217a2-991e-444a-9a86-c3f56ba90f93"/> + <where>AB_KEYWORD_ATTRIBUTEID = '93d60e4b-e984-423e-b97f-d2abf61de41d'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="923217a2-991e-444a-9a86-c3f56ba90f93"/> + <where>AB_KEYWORD_ATTRIBUTEID = 'f1413a2f-6631-4255-9dc9-a28e6eb30497'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ab8d06bb-18eb-4fbe-9e00-ecb34bd38c8f"/> + <where>AB_KEYWORD_ATTRIBUTEID = 'b5a322c7-41a0-4713-b90a-3c3151833f8d'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b3765719-9d07-41c4-a813-18bc9056db1a"/> + <where>AB_KEYWORD_ATTRIBUTEID = '08fcb5db-531d-4a83-8c6e-b9c9c95dcb16'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b3765719-9d07-41c4-a813-18bc9056db1a"/> + <where>AB_KEYWORD_ATTRIBUTEID = '605be9b3-1fe7-4bcc-9a06-8e8651655985'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ATTRIBUTEID = '8365d915-85b9-4881-9705-542c98750078'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6457580f-aa4c-49d8-a92e-a9255e3dac34"/> + <where>AB_KEYWORD_ATTRIBUTEID = 'ace00630-1e07-4615-8d61-2478995538fa'</where> + </update> + <update tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6a4a5250-6231-4bf7-8c16-bb5994c4e2d0"/> + <where>AB_KEYWORD_ATTRIBUTEID = 'b03f93a2-3b87-4a98-b3f9-9ed2358abdfe'</where> + </update> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2021.0.0/KeywordMigration/update_keyword_entry.xml b/.liquibase/Data_alias/basic/2021.0.0/KeywordMigration/update_keyword_entry.xml new file mode 100644 index 0000000000000000000000000000000000000000..5fd4d0f0160d13f2a7d09a79eaacdb2ca9340f3b --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.0.0/KeywordMigration/update_keyword_entry.xml @@ -0,0 +1,1525 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="autogenerated" id="57268a53-78a9-4999-9990-6024ee2da551"> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c1295c26-c580-42b8-85dc-6c08811c812c"/> + <where>AB_KEYWORD_ENTRYID = '6fea53cc-c167-4aad-9468-64a0c525ad47'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c1295c26-c580-42b8-85dc-6c08811c812c"/> + <where>AB_KEYWORD_ENTRYID = '93c67ca9-dec2-4d8a-863a-3b9cbce7bed1'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c1295c26-c580-42b8-85dc-6c08811c812c"/> + <where>AB_KEYWORD_ENTRYID = 'f6566efc-5918-426d-9a45-a160ad632d55'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="1f3bde3a-7d74-4335-abd3-561028a1e0c3"/> + <where>AB_KEYWORD_ENTRYID = 'd453609f-0229-4073-982a-9d6f753515b1'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="1f3bde3a-7d74-4335-abd3-561028a1e0c3"/> + <where>AB_KEYWORD_ENTRYID = '5ce88207-6c9b-4f3e-9f97-d6ca219c6cb4'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="1f3bde3a-7d74-4335-abd3-561028a1e0c3"/> + <where>AB_KEYWORD_ENTRYID = '59a39f58-9ba1-4c2d-9d2b-43d43c6c8acd'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="53a36940-7781-4d62-bf8d-478c6c3511bf"/> + <where>AB_KEYWORD_ENTRYID = 'c564719a-18ef-4b9e-b130-dde8b2b518ad'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="53a36940-7781-4d62-bf8d-478c6c3511bf"/> + <where>AB_KEYWORD_ENTRYID = '6f4c6e49-36ca-4b91-ba83-c507203e1eac'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="53a36940-7781-4d62-bf8d-478c6c3511bf"/> + <where>AB_KEYWORD_ENTRYID = 'bb386131-ee36-4835-b458-6751f137a941'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="2e785215-4292-40ff-a7bf-d4d0f79a738e"/> + <where>AB_KEYWORD_ENTRYID = '03a1e5b6-64d3-47fd-8085-08b9b95bab19'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="2e785215-4292-40ff-a7bf-d4d0f79a738e"/> + <where>AB_KEYWORD_ENTRYID = '539a4ed0-d3f1-4e2f-b3ff-339276045269'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="2e785215-4292-40ff-a7bf-d4d0f79a738e"/> + <where>AB_KEYWORD_ENTRYID = '6bfb93b6-7940-4713-a053-16e17d875032'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="39d147db-ba80-446b-a80f-d23ef9f71659"/> + <where>AB_KEYWORD_ENTRYID = 'c1c736a7-95af-417d-8993-3c6cbf065059'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="39d147db-ba80-446b-a80f-d23ef9f71659"/> + <where>AB_KEYWORD_ENTRYID = '41b15842-0d31-4023-b0b9-fa97f25bc444'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="39d147db-ba80-446b-a80f-d23ef9f71659"/> + <where>AB_KEYWORD_ENTRYID = '1bebbb3c-f412-4031-b533-f1e38c86eb17'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="39d147db-ba80-446b-a80f-d23ef9f71659"/> + <where>AB_KEYWORD_ENTRYID = '03f62e1e-0b9a-4e7e-a895-2d10bf57712f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="39d147db-ba80-446b-a80f-d23ef9f71659"/> + <where>AB_KEYWORD_ENTRYID = '4959d607-b218-4e45-9c4b-b28f3ae6b0ff'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="5c7a2307-ae32-4d19-976b-29f8675808fa"/> + <where>AB_KEYWORD_ENTRYID = '2c440f87-292d-4ec3-8eb2-74821e251365'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="5c7a2307-ae32-4d19-976b-29f8675808fa"/> + <where>AB_KEYWORD_ENTRYID = '8dc775f2-05e1-47b5-b372-54c261f1f9d8'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="5c7a2307-ae32-4d19-976b-29f8675808fa"/> + <where>AB_KEYWORD_ENTRYID = '9c2a1b76-b9c4-486d-a1d2-d12970f20bd0'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="7d329db3-1874-473d-b4e8-56fd4b84054c"/> + <where>AB_KEYWORD_ENTRYID = 'ccc54161-e5b5-48ad-9577-d4314b4cc232'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="7d329db3-1874-473d-b4e8-56fd4b84054c"/> + <where>AB_KEYWORD_ENTRYID = '67d6c3b0-d04e-4133-8ffb-4cb462277245'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="7d329db3-1874-473d-b4e8-56fd4b84054c"/> + <where>AB_KEYWORD_ENTRYID = '95e2032c-fa20-4a38-8b0e-6d86db1ba097'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="7d329db3-1874-473d-b4e8-56fd4b84054c"/> + <where>AB_KEYWORD_ENTRYID = 'cc329284-adf4-45f8-8e6f-6f8609536ca0'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e355059f-5b01-4438-8444-334655d6e136"/> + <where>AB_KEYWORD_ENTRYID = 'b6079a56-594f-463d-8b85-67db622cf522'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e355059f-5b01-4438-8444-334655d6e136"/> + <where>AB_KEYWORD_ENTRYID = '7c666a94-ef9a-42e9-83c8-de3a97123bce'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e355059f-5b01-4438-8444-334655d6e136"/> + <where>AB_KEYWORD_ENTRYID = '72ffaa0b-9982-4614-93be-31ae76f91d19'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e355059f-5b01-4438-8444-334655d6e136"/> + <where>AB_KEYWORD_ENTRYID = '688b91d3-3c5b-4704-9220-e11b4532c05c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e355059f-5b01-4438-8444-334655d6e136"/> + <where>AB_KEYWORD_ENTRYID = '5f5a0927-5827-4948-bfe7-32e83d8cf3aa'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e355059f-5b01-4438-8444-334655d6e136"/> + <where>AB_KEYWORD_ENTRYID = '611cd178-c0fc-4d2a-a9ba-af747d571755'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="3b0a4044-9cfd-4466-9edd-50876a926e76"/> + <where>AB_KEYWORD_ENTRYID = '87bd1a28-d364-47ee-9a01-33714f6998ba'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="3b0a4044-9cfd-4466-9edd-50876a926e76"/> + <where>AB_KEYWORD_ENTRYID = '9912dcc6-edf1-4a68-b605-925a31b7f9a4'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="3b0a4044-9cfd-4466-9edd-50876a926e76"/> + <where>AB_KEYWORD_ENTRYID = 'd3bd6272-d1d9-4a5c-9f5c-772f0ee2551e'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="3b0a4044-9cfd-4466-9edd-50876a926e76"/> + <where>AB_KEYWORD_ENTRYID = '0cba2fe7-97c3-4eb4-9999-1fc4e8e93a7a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="83ea3621-22d8-403b-a73e-5d63a6dee434"/> + <where>AB_KEYWORD_ENTRYID = 'b25309f8-d923-4b9e-9689-b14c3463c9e0'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="83ea3621-22d8-403b-a73e-5d63a6dee434"/> + <where>AB_KEYWORD_ENTRYID = '17ef91a4-5af5-4ae1-86cd-49568a88a2a2'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="83ea3621-22d8-403b-a73e-5d63a6dee434"/> + <where>AB_KEYWORD_ENTRYID = '3ba58828-f27e-4342-b3e5-78d562756322'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="83ea3621-22d8-403b-a73e-5d63a6dee434"/> + <where>AB_KEYWORD_ENTRYID = '0e3b1e24-af88-4058-bd7c-23aba5d36e06'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e8e138b0-5628-45c5-b0c2-6aa0086b2ae2"/> + <where>AB_KEYWORD_ENTRYID = 'a6b639c5-41f7-41fb-8856-059f5ea1a629'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e8e138b0-5628-45c5-b0c2-6aa0086b2ae2"/> + <where>AB_KEYWORD_ENTRYID = '7177a6a6-6a71-43a5-a2ba-fe2f80054fef'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e8e138b0-5628-45c5-b0c2-6aa0086b2ae2"/> + <where>AB_KEYWORD_ENTRYID = 'f5466bc3-77b8-45f4-817a-79b16946f680'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b92db41e-bdbd-4c3c-96ec-b23672f25340"/> + <where>AB_KEYWORD_ENTRYID = 'd0f5c21d-14ff-414b-9d51-2a2c5f49b50d'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b92db41e-bdbd-4c3c-96ec-b23672f25340"/> + <where>AB_KEYWORD_ENTRYID = 'a581bf7c-1cb7-4821-96f5-6eed9a0de58c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b92db41e-bdbd-4c3c-96ec-b23672f25340"/> + <where>AB_KEYWORD_ENTRYID = 'b47478a1-1fac-4e74-921f-b47c146e034d'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b92db41e-bdbd-4c3c-96ec-b23672f25340"/> + <where>AB_KEYWORD_ENTRYID = '932057b5-a2e1-4f0b-83be-28692d9e9e44'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="cd77dc51-70ee-469c-b0d6-687893237de1"/> + <where>AB_KEYWORD_ENTRYID = '392ee66d-f777-43ab-b8d5-344fd75e5454'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="cd77dc51-70ee-469c-b0d6-687893237de1"/> + <where>AB_KEYWORD_ENTRYID = 'a58987b7-a5f9-4f4a-8c1f-2553ff7bad60'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="cd77dc51-70ee-469c-b0d6-687893237de1"/> + <where>AB_KEYWORD_ENTRYID = '74531aeb-7e01-4595-a5df-0ba3cad09071'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="cd77dc51-70ee-469c-b0d6-687893237de1"/> + <where>AB_KEYWORD_ENTRYID = 'a47f5661-6b71-43a5-a14f-42aff04fe8e4'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f5622bfc-35b3-4e74-bb8b-b4cbdcafeb8c"/> + <where>AB_KEYWORD_ENTRYID = 'c899faa1-6b89-4616-8640-cd2c8011d123'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f5622bfc-35b3-4e74-bb8b-b4cbdcafeb8c"/> + <where>AB_KEYWORD_ENTRYID = '4d97f540-79cc-41d7-8bf3-e45b3dfd3683'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f5622bfc-35b3-4e74-bb8b-b4cbdcafeb8c"/> + <where>AB_KEYWORD_ENTRYID = 'cbaeb1dc-493c-4811-b8bc-6654559c3ca6'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b3765719-9d07-41c4-a813-18bc9056db1a"/> + <where>AB_KEYWORD_ENTRYID = '9c421b0b-8529-4e07-9463-28d59fd027b6'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b3765719-9d07-41c4-a813-18bc9056db1a"/> + <where>AB_KEYWORD_ENTRYID = 'f78f229f-f809-4bd2-aca8-24e2f82fa220'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b3765719-9d07-41c4-a813-18bc9056db1a"/> + <where>AB_KEYWORD_ENTRYID = '8cb1b843-713a-4193-aa50-9f5ca06820f8'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b3765719-9d07-41c4-a813-18bc9056db1a"/> + <where>AB_KEYWORD_ENTRYID = '039fd6ae-b4ad-431e-86bf-59ed2f4df0a9'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b3765719-9d07-41c4-a813-18bc9056db1a"/> + <where>AB_KEYWORD_ENTRYID = 'b72294cd-3a46-4f71-ab93-72824f63f7f4'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="0c3addc3-cbe9-4bdf-8db7-a53401b24a22"/> + <where>AB_KEYWORD_ENTRYID = 'f83c96e3-47be-4ca1-bc47-4a3a2fce7fca'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="0c3addc3-cbe9-4bdf-8db7-a53401b24a22"/> + <where>AB_KEYWORD_ENTRYID = '1a197ade-0c61-4643-8287-159719d519b4'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="0c3addc3-cbe9-4bdf-8db7-a53401b24a22"/> + <where>AB_KEYWORD_ENTRYID = 'f552b84a-b8e7-472a-9ce5-d64e7f14e74b'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="0c3addc3-cbe9-4bdf-8db7-a53401b24a22"/> + <where>AB_KEYWORD_ENTRYID = '7ea06933-94c9-4a05-ba7d-4266df9e4ab2'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="fe288fb5-c5e4-4473-b052-809ce32673eb"/> + <where>AB_KEYWORD_ENTRYID = '7963d4ed-f7a7-4a9f-aa86-fea42167145f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="fe288fb5-c5e4-4473-b052-809ce32673eb"/> + <where>AB_KEYWORD_ENTRYID = '2cacfe09-7dcd-454a-b263-46aee796bc21'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="fe288fb5-c5e4-4473-b052-809ce32673eb"/> + <where>AB_KEYWORD_ENTRYID = '919cffee-5943-4105-a5bc-a14bd33b9f67'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="54d6ad1d-44a0-479d-b42a-982126572658"/> + <where>AB_KEYWORD_ENTRYID = 'fd012937-8fe7-418e-8e55-80b3b5db331c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="54d6ad1d-44a0-479d-b42a-982126572658"/> + <where>AB_KEYWORD_ENTRYID = 'b62e1a05-af41-4d2d-978c-6c2950b202d8'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="54d6ad1d-44a0-479d-b42a-982126572658"/> + <where>AB_KEYWORD_ENTRYID = '294db00d-6237-4db8-b7b6-41c5dc79a1e4'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c8e3bb06-7165-435c-9159-5568158f9616"/> + <where>AB_KEYWORD_ENTRYID = '84574d45-8227-42dd-aea0-de2203517a2c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c8e3bb06-7165-435c-9159-5568158f9616"/> + <where>AB_KEYWORD_ENTRYID = '018a3bb8-5536-461f-8400-25e91550e51f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c8e3bb06-7165-435c-9159-5568158f9616"/> + <where>AB_KEYWORD_ENTRYID = 'b4562d6b-9ff1-4884-8694-3339e760ddf1'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c8e3bb06-7165-435c-9159-5568158f9616"/> + <where>AB_KEYWORD_ENTRYID = 'cda9c073-25e4-4a90-b5b7-fe6514355d31'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c8e3bb06-7165-435c-9159-5568158f9616"/> + <where>AB_KEYWORD_ENTRYID = 'e84b0059-2140-4911-bb3c-73e6f3875022'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c8e3bb06-7165-435c-9159-5568158f9616"/> + <where>AB_KEYWORD_ENTRYID = 'b9216c02-7abd-43aa-a02e-89fa7d428e0c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c8e3bb06-7165-435c-9159-5568158f9616"/> + <where>AB_KEYWORD_ENTRYID = '6efbc578-4b80-463f-9c4f-16db99a8a9d6'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c8e3bb06-7165-435c-9159-5568158f9616"/> + <where>AB_KEYWORD_ENTRYID = 'ad252ede-1e46-46ad-8ce1-6788b9103c92'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c8e3bb06-7165-435c-9159-5568158f9616"/> + <where>AB_KEYWORD_ENTRYID = '9fe99387-ea27-4f13-923c-f631486f7bcb'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c8e3bb06-7165-435c-9159-5568158f9616"/> + <where>AB_KEYWORD_ENTRYID = 'd1987d3a-fc7f-4882-8292-36e9699f6368'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c8e3bb06-7165-435c-9159-5568158f9616"/> + <where>AB_KEYWORD_ENTRYID = 'd62db634-94ca-49e5-970a-67696d013ed6'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c8e3bb06-7165-435c-9159-5568158f9616"/> + <where>AB_KEYWORD_ENTRYID = '148176ea-14ed-4a74-8290-e5dffcd71eaa'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c8e3bb06-7165-435c-9159-5568158f9616"/> + <where>AB_KEYWORD_ENTRYID = 'd5827700-2ef1-43a1-a7f1-46a4de1ec6ec'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c8e3bb06-7165-435c-9159-5568158f9616"/> + <where>AB_KEYWORD_ENTRYID = '1a0ae403-90c0-424c-a13a-8b1c4cfd314d'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="13a3d854-4286-4165-be71-dc246f72c100"/> + <where>AB_KEYWORD_ENTRYID = '8d9b0416-fee2-44d0-9334-1864ff78a824'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="13a3d854-4286-4165-be71-dc246f72c100"/> + <where>AB_KEYWORD_ENTRYID = '6f5c01ad-f9d9-43b9-834b-139974a75115'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="13a3d854-4286-4165-be71-dc246f72c100"/> + <where>AB_KEYWORD_ENTRYID = '8bac5a6d-7810-469b-8fdb-0d3a0bf8e122'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="13a3d854-4286-4165-be71-dc246f72c100"/> + <where>AB_KEYWORD_ENTRYID = 'f54b3c0b-bd80-4bc5-8a5c-55be2fd57017'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="8efff07c-1853-4040-90c2-e8b343db8d18"/> + <where>AB_KEYWORD_ENTRYID = '2613a00e-7c2d-4513-bb37-c375e3e26959'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="8efff07c-1853-4040-90c2-e8b343db8d18"/> + <where>AB_KEYWORD_ENTRYID = '9f20dcb7-6068-43d5-8aac-a29dcbba8fb2'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="8efff07c-1853-4040-90c2-e8b343db8d18"/> + <where>AB_KEYWORD_ENTRYID = '4224ea44-ab84-4215-a1c3-6750ab07af03'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6818d2a6-f47a-4d72-a0b2-3fc6fc74fb27"/> + <where>AB_KEYWORD_ENTRYID = '6ab0cc9e-021c-42ef-abfd-f9f7a58aa76c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6818d2a6-f47a-4d72-a0b2-3fc6fc74fb27"/> + <where>AB_KEYWORD_ENTRYID = '6a479d71-2c05-4496-9c6c-c9aeef929bcf'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6818d2a6-f47a-4d72-a0b2-3fc6fc74fb27"/> + <where>AB_KEYWORD_ENTRYID = '34701d4d-7435-43bc-8b2f-ad2a70065a75'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6818d2a6-f47a-4d72-a0b2-3fc6fc74fb27"/> + <where>AB_KEYWORD_ENTRYID = '7311d8c5-edf2-492e-be4d-6f0469334611'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ad91fa20-157b-4e57-b9ad-1281e40024b3"/> + <where>AB_KEYWORD_ENTRYID = '972e5eb1-a457-4b75-b966-1183896dac2c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ad91fa20-157b-4e57-b9ad-1281e40024b3"/> + <where>AB_KEYWORD_ENTRYID = 'cb7ecaea-b4e6-460e-9006-4a3d059b9857'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ad91fa20-157b-4e57-b9ad-1281e40024b3"/> + <where>AB_KEYWORD_ENTRYID = '14de196a-aaa6-41b9-b503-3df1d45acc1e'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ad91fa20-157b-4e57-b9ad-1281e40024b3"/> + <where>AB_KEYWORD_ENTRYID = '8a9791c1-655f-4340-91b4-cfdf6372fc75'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ad91fa20-157b-4e57-b9ad-1281e40024b3"/> + <where>AB_KEYWORD_ENTRYID = '1390813c-6b94-4336-9986-9bcaddab69ac'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ad91fa20-157b-4e57-b9ad-1281e40024b3"/> + <where>AB_KEYWORD_ENTRYID = '2c188a17-2961-45df-bd68-34b55352375c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ad91fa20-157b-4e57-b9ad-1281e40024b3"/> + <where>AB_KEYWORD_ENTRYID = '75a67526-6b7c-400d-b958-e1f8f45466aa'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="05fe9872-c1a8-41ab-bf0b-d0df0537fe4f"/> + <where>AB_KEYWORD_ENTRYID = 'ab44bd2c-dffa-4731-8a24-fad31f069c46'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="05fe9872-c1a8-41ab-bf0b-d0df0537fe4f"/> + <where>AB_KEYWORD_ENTRYID = 'e59169d3-c0d9-4718-b8b6-e315857948a0'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="05fe9872-c1a8-41ab-bf0b-d0df0537fe4f"/> + <where>AB_KEYWORD_ENTRYID = '415f1cf0-8c5b-4b6e-9900-0d0d6d72381c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="05fe9872-c1a8-41ab-bf0b-d0df0537fe4f"/> + <where>AB_KEYWORD_ENTRYID = '6182cc48-df2b-4ba9-893a-bcedfd0e1e4b'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="05fe9872-c1a8-41ab-bf0b-d0df0537fe4f"/> + <where>AB_KEYWORD_ENTRYID = 'f5b601a5-451b-4ab6-9167-b95077e90c62'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="bb351e6a-c35b-4af6-8540-898b2cd368a4"/> + <where>AB_KEYWORD_ENTRYID = '9e30365b-a9a6-4b57-ae6b-140c9e5a4eb4'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="91e847b9-9c35-4e1e-8936-045eb7d4f90a"/> + <where>AB_KEYWORD_ENTRYID = 'e14fab55-4a85-48c2-a109-125eaed9dc3f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="91e847b9-9c35-4e1e-8936-045eb7d4f90a"/> + <where>AB_KEYWORD_ENTRYID = '8f55a5e3-00a9-4691-ab79-309a3eda68ec'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="91e847b9-9c35-4e1e-8936-045eb7d4f90a"/> + <where>AB_KEYWORD_ENTRYID = '808a55bc-5876-4deb-a78f-bb352c41d712'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="91e847b9-9c35-4e1e-8936-045eb7d4f90a"/> + <where>AB_KEYWORD_ENTRYID = '941e60df-a4f5-4ae8-9ca1-d9f2b2d01d9d'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="91e847b9-9c35-4e1e-8936-045eb7d4f90a"/> + <where>AB_KEYWORD_ENTRYID = '2f21341b-9991-4967-a785-60216ec8c25e'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="a5206aff-79f8-413e-a76d-4cb9d39694d3"/> + <where>AB_KEYWORD_ENTRYID = '94529505-1913-4827-9812-026053bfcb51'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="a5206aff-79f8-413e-a76d-4cb9d39694d3"/> + <where>AB_KEYWORD_ENTRYID = '3b677654-84e2-4b9c-b5d0-ed2b359c45af'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="a5206aff-79f8-413e-a76d-4cb9d39694d3"/> + <where>AB_KEYWORD_ENTRYID = '6febeb71-a8a4-400c-80fd-da27ac935260'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="a5206aff-79f8-413e-a76d-4cb9d39694d3"/> + <where>AB_KEYWORD_ENTRYID = '68c3b1f7-2555-4d3b-a252-7df978173884'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6457580f-aa4c-49d8-a92e-a9255e3dac34"/> + <where>AB_KEYWORD_ENTRYID = 'cc16d938-b95f-4e07-a3b4-73f8524bb664'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6457580f-aa4c-49d8-a92e-a9255e3dac34"/> + <where>AB_KEYWORD_ENTRYID = '66950de5-fa8b-465c-8db1-4eb7aac98bd3'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6457580f-aa4c-49d8-a92e-a9255e3dac34"/> + <where>AB_KEYWORD_ENTRYID = 'aa2b9cc9-3e87-4fe9-98a2-a4e417a3324f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6457580f-aa4c-49d8-a92e-a9255e3dac34"/> + <where>AB_KEYWORD_ENTRYID = 'cfebe176-0a64-428d-b0ec-bba454d2ca3e'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6457580f-aa4c-49d8-a92e-a9255e3dac34"/> + <where>AB_KEYWORD_ENTRYID = 'd80c3689-7e0a-45ac-801d-91d199c08bd5'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6457580f-aa4c-49d8-a92e-a9255e3dac34"/> + <where>AB_KEYWORD_ENTRYID = 'e6c36792-763d-44f8-8afe-157c8f158ef8'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6457580f-aa4c-49d8-a92e-a9255e3dac34"/> + <where>AB_KEYWORD_ENTRYID = '7abf7fc5-08a1-4bae-b0ca-ec5e406d154c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="cda60290-b041-450c-8397-6e462c45835f"/> + <where>AB_KEYWORD_ENTRYID = '2acd3694-ccef-4d0b-ae7a-b3d31f8d9cc0'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="cda60290-b041-450c-8397-6e462c45835f"/> + <where>AB_KEYWORD_ENTRYID = 'cb07397b-a976-4960-b8e5-9edf189c5caf'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="cda60290-b041-450c-8397-6e462c45835f"/> + <where>AB_KEYWORD_ENTRYID = '990a03e0-aeb4-4bdb-9d22-09b66eee6b85'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="cda60290-b041-450c-8397-6e462c45835f"/> + <where>AB_KEYWORD_ENTRYID = '51085b8b-ded0-4d1d-9e85-ae89bd1480fe'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="cda60290-b041-450c-8397-6e462c45835f"/> + <where>AB_KEYWORD_ENTRYID = 'b72ba2f5-612b-4ef6-832e-62089892b8d7'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="1f700fd2-5295-43a9-95ad-e73add4b5086"/> + <where>AB_KEYWORD_ENTRYID = '49bb6904-dd20-4ede-aaff-ae80131ed274'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="1f700fd2-5295-43a9-95ad-e73add4b5086"/> + <where>AB_KEYWORD_ENTRYID = '5213a48a-b6d2-47ee-8409-a4af7477535f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="1f700fd2-5295-43a9-95ad-e73add4b5086"/> + <where>AB_KEYWORD_ENTRYID = '045d0567-4535-4d22-84f2-95b3b0e23000'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="1f700fd2-5295-43a9-95ad-e73add4b5086"/> + <where>AB_KEYWORD_ENTRYID = 'e62da2f2-6352-4660-b2ff-1e8a552d298a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c0448b78-0e78-4db6-895e-5d0d9952f961"/> + <where>AB_KEYWORD_ENTRYID = '115495eb-dff4-436d-8114-b9a7644586bf'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c0448b78-0e78-4db6-895e-5d0d9952f961"/> + <where>AB_KEYWORD_ENTRYID = '9212a797-4470-4170-b4d1-330a5d991625'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c0448b78-0e78-4db6-895e-5d0d9952f961"/> + <where>AB_KEYWORD_ENTRYID = '1f857be1-7de0-479f-bac8-59b22d48fe39'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c0448b78-0e78-4db6-895e-5d0d9952f961"/> + <where>AB_KEYWORD_ENTRYID = '19997ffa-bfe3-4f6a-82f8-e862acb24655'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c0448b78-0e78-4db6-895e-5d0d9952f961"/> + <where>AB_KEYWORD_ENTRYID = 'd8e2cc64-cc61-440e-b0fc-3d5b45d75ba0'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="923217a2-991e-444a-9a86-c3f56ba90f93"/> + <where>AB_KEYWORD_ENTRYID = 'b42caac9-8f8f-46e5-9f1c-d121cdf3ad8f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="923217a2-991e-444a-9a86-c3f56ba90f93"/> + <where>AB_KEYWORD_ENTRYID = '8a2d19c9-bc32-437e-9261-78ed30110e92'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="923217a2-991e-444a-9a86-c3f56ba90f93"/> + <where>AB_KEYWORD_ENTRYID = '46f55a58-dbe4-40ae-9306-481df9095088'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="923217a2-991e-444a-9a86-c3f56ba90f93"/> + <where>AB_KEYWORD_ENTRYID = 'afa8cf58-07e8-4ee9-b24e-96cb6fa76aec'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="923217a2-991e-444a-9a86-c3f56ba90f93"/> + <where>AB_KEYWORD_ENTRYID = 'c9483fb9-c295-43d2-94e0-8c949cf6dc47'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="923217a2-991e-444a-9a86-c3f56ba90f93"/> + <where>AB_KEYWORD_ENTRYID = '0e8eab64-4c79-4eed-9746-0ac6fc397620'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="923217a2-991e-444a-9a86-c3f56ba90f93"/> + <where>AB_KEYWORD_ENTRYID = '405e2b7b-20c2-4824-a8b5-c7a533784ef3'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ec9ac6e2-d2de-4e8e-bfad-bebd38c65026"/> + <where>AB_KEYWORD_ENTRYID = '97ec9a7e-a1dd-4167-bf7d-57ee3d79d46f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ec9ac6e2-d2de-4e8e-bfad-bebd38c65026"/> + <where>AB_KEYWORD_ENTRYID = '798c1720-901e-4eae-bab3-80f334830601'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ec9ac6e2-d2de-4e8e-bfad-bebd38c65026"/> + <where>AB_KEYWORD_ENTRYID = '53a01187-5306-4980-8c40-153e910dd115'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ec9ac6e2-d2de-4e8e-bfad-bebd38c65026"/> + <where>AB_KEYWORD_ENTRYID = '3d17defd-5b6e-4e19-816c-f9a19aca3cc0'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="5f94376f-18bb-41d5-8be7-f7dce020495c"/> + <where>AB_KEYWORD_ENTRYID = '9887b380-8e6a-4fab-a99c-46172cb9ecc5'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="5f94376f-18bb-41d5-8be7-f7dce020495c"/> + <where>AB_KEYWORD_ENTRYID = 'c228d007-5f1b-41a9-baaf-4bac444e2d63'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="5f94376f-18bb-41d5-8be7-f7dce020495c"/> + <where>AB_KEYWORD_ENTRYID = '9c24af78-bb51-4706-ae3c-35f450fc4034'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="5f94376f-18bb-41d5-8be7-f7dce020495c"/> + <where>AB_KEYWORD_ENTRYID = '612acb5c-9cde-4229-8910-6ca6eb7bed8c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="5f94376f-18bb-41d5-8be7-f7dce020495c"/> + <where>AB_KEYWORD_ENTRYID = '711db73d-eed2-43a6-ac57-a608a831eb8d'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="8bf2b609-b422-401f-a6c5-7c07107cbb87"/> + <where>AB_KEYWORD_ENTRYID = '6a26d9c5-bc21-455e-828a-26e1b9b278da'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="8bf2b609-b422-401f-a6c5-7c07107cbb87"/> + <where>AB_KEYWORD_ENTRYID = '946b9f7d-c667-47a2-90f4-57935347aac5'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="8bf2b609-b422-401f-a6c5-7c07107cbb87"/> + <where>AB_KEYWORD_ENTRYID = '81a8a308-46e1-4cf6-8383-15736e45219c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="8bf2b609-b422-401f-a6c5-7c07107cbb87"/> + <where>AB_KEYWORD_ENTRYID = 'f4bcb779-ea53-4ad6-bbcd-8681a3813a4c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="8bf2b609-b422-401f-a6c5-7c07107cbb87"/> + <where>AB_KEYWORD_ENTRYID = '47272e85-ae18-4bd6-950f-449bc531c5c5'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="8bf2b609-b422-401f-a6c5-7c07107cbb87"/> + <where>AB_KEYWORD_ENTRYID = 'c046313e-d7af-4440-a3c1-0cdf2b6220ca'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ad91fa20-157b-4e57-b9ad-1281e40024b3"/> + <where>AB_KEYWORD_ENTRYID = '9d2f9605-1a5e-47d3-8920-168f5637e37f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ad91fa20-157b-4e57-b9ad-1281e40024b3"/> + <where>AB_KEYWORD_ENTRYID = 'ee893a1c-d007-46fe-a190-727124c4467b'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ad91fa20-157b-4e57-b9ad-1281e40024b3"/> + <where>AB_KEYWORD_ENTRYID = '191d7293-3b3f-4dc7-bbe2-9da1a897f7df'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ad91fa20-157b-4e57-b9ad-1281e40024b3"/> + <where>AB_KEYWORD_ENTRYID = '00a61337-d3d3-4e7e-bc48-cb08cabe01b3'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ab8d06bb-18eb-4fbe-9e00-ecb34bd38c8f"/> + <where>AB_KEYWORD_ENTRYID = 'b8409c4a-6447-408a-bd06-dfe67054a4f1'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ab8d06bb-18eb-4fbe-9e00-ecb34bd38c8f"/> + <where>AB_KEYWORD_ENTRYID = 'edba1a8f-766b-4dfa-9360-1a2aca8569d6'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ab8d06bb-18eb-4fbe-9e00-ecb34bd38c8f"/> + <where>AB_KEYWORD_ENTRYID = 'ed1b3d39-9cab-4c3c-84c5-438a8b67be53'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="58ff4cea-10b7-4cf9-b326-81337b5ddd48"/> + <where>AB_KEYWORD_ENTRYID = '9509c6b8-208a-4e97-bdcd-53642d0c7489'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="58ff4cea-10b7-4cf9-b326-81337b5ddd48"/> + <where>AB_KEYWORD_ENTRYID = 'd713c45a-6f87-4516-ae21-1d8f1c217949'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="58ff4cea-10b7-4cf9-b326-81337b5ddd48"/> + <where>AB_KEYWORD_ENTRYID = '410a389b-67d4-4155-8d9e-1e8d816ecfb9'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="db283e25-904d-41cb-ac20-3c80c85fa423"/> + <where>AB_KEYWORD_ENTRYID = 'eadf3ecb-ac35-4a94-879a-f6e85a72fa29'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="db283e25-904d-41cb-ac20-3c80c85fa423"/> + <where>AB_KEYWORD_ENTRYID = '4dcc3315-8a38-42d9-ba34-f8899b86ca85'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="923217a2-991e-444a-9a86-c3f56ba90f93"/> + <where>AB_KEYWORD_ENTRYID = '028af5dd-1071-4108-8685-ed7124376706'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="cda5deac-5b7c-4c98-9904-2eb3b224235d"/> + <where>AB_KEYWORD_ENTRYID = '75bd97bc-56f3-4ea3-a132-df3cb9cda071'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="cda5deac-5b7c-4c98-9904-2eb3b224235d"/> + <where>AB_KEYWORD_ENTRYID = '6e30d397-e31f-4ccb-96e9-51cf71d259fa'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="cda5deac-5b7c-4c98-9904-2eb3b224235d"/> + <where>AB_KEYWORD_ENTRYID = '722e83bc-148a-4762-abda-d491bf590bd5'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="cda5deac-5b7c-4c98-9904-2eb3b224235d"/> + <where>AB_KEYWORD_ENTRYID = '191617b2-09cc-4fe6-bc02-1cee746285d5'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="cda5deac-5b7c-4c98-9904-2eb3b224235d"/> + <where>AB_KEYWORD_ENTRYID = '87f97554-c335-4328-911a-345d8a9abd7d'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="866fd65f-131c-4038-99ce-78606971ec98"/> + <where>AB_KEYWORD_ENTRYID = '767b89c6-2461-4d0e-9b7a-dda33e5090c9'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="866fd65f-131c-4038-99ce-78606971ec98"/> + <where>AB_KEYWORD_ENTRYID = '2fa7cddb-1e2c-438f-8f16-92f245af09f4'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="866fd65f-131c-4038-99ce-78606971ec98"/> + <where>AB_KEYWORD_ENTRYID = '67ea4d33-b683-4a04-b2e3-4af54d6debcb'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="866fd65f-131c-4038-99ce-78606971ec98"/> + <where>AB_KEYWORD_ENTRYID = 'd7be200e-ffc0-47a7-b0bb-3da92f39b993'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="866fd65f-131c-4038-99ce-78606971ec98"/> + <where>AB_KEYWORD_ENTRYID = '3b836d42-9ecf-49b9-8df9-570c27860c01'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="866fd65f-131c-4038-99ce-78606971ec98"/> + <where>AB_KEYWORD_ENTRYID = '2a4e6516-8493-4dde-a9df-bf2efd4db0c8'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="866fd65f-131c-4038-99ce-78606971ec98"/> + <where>AB_KEYWORD_ENTRYID = '3e7f2a42-ad8b-48da-aa11-95525ca36d01'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="866fd65f-131c-4038-99ce-78606971ec98"/> + <where>AB_KEYWORD_ENTRYID = '11c05d41-78ec-4d7c-acbe-f94912f2386c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="bfc9eb87-0292-4fa1-9c87-39666c2ae6d2"/> + <where>AB_KEYWORD_ENTRYID = 'ba369295-c717-48eb-ae76-314087375e06'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="bfc9eb87-0292-4fa1-9c87-39666c2ae6d2"/> + <where>AB_KEYWORD_ENTRYID = 'dcacb175-4c8a-4941-a417-69a971f52583'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="bfc9eb87-0292-4fa1-9c87-39666c2ae6d2"/> + <where>AB_KEYWORD_ENTRYID = '1a508899-e2bf-409d-8a57-3ca31c9c832d'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="3b0a4044-9cfd-4466-9edd-50876a926e76"/> + <where>AB_KEYWORD_ENTRYID = '3c734077-8677-4732-86ef-7df01d9646b3'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c0448b78-0e78-4db6-895e-5d0d9952f961"/> + <where>AB_KEYWORD_ENTRYID = 'b0123a07-0d21-4365-9aa2-c8be18c56141'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b5afd40b-bfa7-4aee-89ea-06b8c7deb304"/> + <where>AB_KEYWORD_ENTRYID = 'c564719a-18ef-423e-b130-dp88b2b518ad'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b5afd40b-bfa7-4aee-89ea-06b8c7deb304"/> + <where>AB_KEYWORD_ENTRYID = '6f4c6e49-36ca-4b98-ba83-c507203wawal'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b5afd40b-bfa7-4aee-89ea-06b8c7deb304"/> + <where>AB_KEYWORD_ENTRYID = 'bb386131-ee36-9771-b458-6751f137a941'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b5afd40b-bfa7-4aee-89ea-06b8c7deb304"/> + <where>AB_KEYWORD_ENTRYID = 'bb38aa51-ee36-9771-b458-6751f137a941'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e23c8316-d43a-4606-803e-d4488823cc52"/> + <where>AB_KEYWORD_ENTRYID = 'c564719a-18ef-423e-b130-dp88b2b51123'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e23c8316-d43a-4606-803e-d4488823cc52"/> + <where>AB_KEYWORD_ENTRYID = '6f4c6e49-36ca-4b98-ba83-c507203wa456'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e23c8316-d43a-4606-803e-d4488823cc52"/> + <where>AB_KEYWORD_ENTRYID = 'bb386131-ee36-9771-b458-6751f137a789'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e23c8316-d43a-4606-803e-d4488823cc52"/> + <where>AB_KEYWORD_ENTRYID = 'bb38aa51-ee36-9771-b458-6751f137a999'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e23c8316-d43a-4606-803e-d4488823cc52"/> + <where>AB_KEYWORD_ENTRYID = 'beb7691f-ff9e-4344-89e1-d2664f7384e0'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e23c8316-d43a-4606-803e-d4488823cc52"/> + <where>AB_KEYWORD_ENTRYID = '267d1707-99db-40fa-914a-e36ba22e3ad6'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="43bffa8e-581a-4854-917b-c75e9119921f"/> + <where>AB_KEYWORD_ENTRYID = '8d95cad1-3ab2-4b6c-9b38-064cb914216d'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="43bffa8e-581a-4854-917b-c75e9119921f"/> + <where>AB_KEYWORD_ENTRYID = '3e5036a1-43a1-4bb1-ad56-ed42df7c9538'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="43bffa8e-581a-4854-917b-c75e9119921f"/> + <where>AB_KEYWORD_ENTRYID = '0759da45-5a5b-4163-a3a1-6a19f5a196c5'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="59790e82-72d4-4682-8e4d-df93ccb35c64"/> + <where>AB_KEYWORD_ENTRYID = '0dc9b27b-56d8-4650-92ee-bf85a3c67cb3'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="59790e82-72d4-4682-8e4d-df93ccb35c64"/> + <where>AB_KEYWORD_ENTRYID = 'b1f5ea38-1b8c-47a8-a8ad-4c6ed9c26cda'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="59790e82-72d4-4682-8e4d-df93ccb35c64"/> + <where>AB_KEYWORD_ENTRYID = '98f4cab1-74b8-4a23-a99a-c3624711beab'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="9e2ad22e-be5f-4f11-b273-42d7d7b5f946"/> + <where>AB_KEYWORD_ENTRYID = '62cb479d-70b2-4cb4-91f5-5d1352f2131b'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="9e2ad22e-be5f-4f11-b273-42d7d7b5f946"/> + <where>AB_KEYWORD_ENTRYID = '73b34a7c-5921-461c-8cf5-17e3aba01bd0'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="9e2ad22e-be5f-4f11-b273-42d7d7b5f946"/> + <where>AB_KEYWORD_ENTRYID = '7ef45db6-9151-45da-adb9-8e7759390ecd'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="0e8217d7-6712-4c16-80d4-d5c9c26a4f47"/> + <where>AB_KEYWORD_ENTRYID = '789667fe-519f-4dea-b691-62c14447d694'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="83ea3621-22d8-403b-a73e-5d63a6dee434"/> + <where>AB_KEYWORD_ENTRYID = '7ac75d3d-243c-49d2-9f50-25403fab003a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="83ea3621-22d8-403b-a73e-5d63a6dee434"/> + <where>AB_KEYWORD_ENTRYID = '2b9c1bdf-b0bb-447d-a57d-e369cf475fca'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="83ea3621-22d8-403b-a73e-5d63a6dee434"/> + <where>AB_KEYWORD_ENTRYID = '45438bcf-74cf-408f-bc4d-5d70595369c8'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="8653e732-0a48-4697-a858-ce58a524553c"/> + <where>AB_KEYWORD_ENTRYID = '676f498f-3f51-459f-8e07-feec7b604245'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="8653e732-0a48-4697-a858-ce58a524553c"/> + <where>AB_KEYWORD_ENTRYID = '14f5e2a4-4998-400f-b857-90e14e8736da'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="8653e732-0a48-4697-a858-ce58a524553c"/> + <where>AB_KEYWORD_ENTRYID = 'd3ae8077-36db-4f52-8f90-b0ebbb6773d7'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="dc580c6b-6748-4eea-97fa-9a08776e395f"/> + <where>AB_KEYWORD_ENTRYID = '27ded05a-99c1-4810-91ee-cbb1e4ddec85'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="dc580c6b-6748-4eea-97fa-9a08776e395f"/> + <where>AB_KEYWORD_ENTRYID = '4409adc1-0130-44d3-8aa9-773ff3ab0816'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c1295c26-c580-42b8-85dc-6c08811c812c"/> + <where>AB_KEYWORD_ENTRYID = 'f3c4cf95-edb6-4637-9186-9ba25ebf927d'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6818d2a6-f47a-4d72-a0b2-3fc6fc74fb27"/> + <where>AB_KEYWORD_ENTRYID = '0b06db5c-1d00-4d01-b8a9-f280a4f69cbc'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6818d2a6-f47a-4d72-a0b2-3fc6fc74fb27"/> + <where>AB_KEYWORD_ENTRYID = '1061168a-4b17-4ba5-be70-948c0dd78f20'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6818d2a6-f47a-4d72-a0b2-3fc6fc74fb27"/> + <where>AB_KEYWORD_ENTRYID = '890a7832-f06f-4e51-8744-73aa8ddea4f8'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6818d2a6-f47a-4d72-a0b2-3fc6fc74fb27"/> + <where>AB_KEYWORD_ENTRYID = 'a5b50ba3-0fb9-4fbe-9e98-4d6c53b329af'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6818d2a6-f47a-4d72-a0b2-3fc6fc74fb27"/> + <where>AB_KEYWORD_ENTRYID = '9d4cdd61-9f6a-46e1-bef0-eaf16613aea5'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6818d2a6-f47a-4d72-a0b2-3fc6fc74fb27"/> + <where>AB_KEYWORD_ENTRYID = '2f742253-c287-40ab-838f-ec797a16fdce'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="bb351e6a-c35b-4af6-8540-898b2cd368a4"/> + <where>AB_KEYWORD_ENTRYID = '2ef84e0e-988a-44b4-9d14-3461555d2f18'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f3986324-87ce-485f-8688-c4e228c39fc6"/> + <where>AB_KEYWORD_ENTRYID = '98075159-ecc2-4851-a971-6f3123a495d3'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="25cb446a-24cd-4ebd-aad2-320da20830da"/> + <where>AB_KEYWORD_ENTRYID = '2710c44b-73a7-4da5-b828-c7ac572ab79c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="25cb446a-24cd-4ebd-aad2-320da20830da"/> + <where>AB_KEYWORD_ENTRYID = '82d04090-3ef1-4eaf-9836-0490733a078f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="25cb446a-24cd-4ebd-aad2-320da20830da"/> + <where>AB_KEYWORD_ENTRYID = 'd1d6a461-1bbf-4f03-ac99-33a2d38a36e3'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="76fc02b9-a1b6-4c76-bdd5-a52d0e1ef286"/> + <where>AB_KEYWORD_ENTRYID = '6e95db61-6991-41c8-b2bb-e2b39c38efa3'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="76fc02b9-a1b6-4c76-bdd5-a52d0e1ef286"/> + <where>AB_KEYWORD_ENTRYID = '250e5cd6-1842-46b1-b968-03988255eaba'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="76fc02b9-a1b6-4c76-bdd5-a52d0e1ef286"/> + <where>AB_KEYWORD_ENTRYID = 'ec51253e-9b45-468d-aafa-42331e54f32b'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c561d74a-44dc-4b57-acad-055f0f557b6f"/> + <where>AB_KEYWORD_ENTRYID = 'b189770f-f36f-4256-b1c9-866010a6aa95'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c561d74a-44dc-4b57-acad-055f0f557b6f"/> + <where>AB_KEYWORD_ENTRYID = '0ecc8e3d-2ff7-40fa-84be-d45988d32ae7'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="0369f43a-e46d-42f7-bfe3-5bc2c7d9d584"/> + <where>AB_KEYWORD_ENTRYID = '5c745e67-6ceb-4dde-9c98-0ff6102fff5a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="0369f43a-e46d-42f7-bfe3-5bc2c7d9d584"/> + <where>AB_KEYWORD_ENTRYID = 'd1c5d5bf-5ce5-4a9a-a5ec-4a7dabd6cf0a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="0369f43a-e46d-42f7-bfe3-5bc2c7d9d584"/> + <where>AB_KEYWORD_ENTRYID = '82fe63e7-14fd-4c07-94fb-6dd05058e570'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="18e6262a-80a0-4f71-baeb-36a6937e356a"/> + <where>AB_KEYWORD_ENTRYID = 'e72a7d5b-7608-4c87-a977-d4a8994e45b4'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="18e6262a-80a0-4f71-baeb-36a6937e356a"/> + <where>AB_KEYWORD_ENTRYID = 'c38a3169-63f8-41f7-88a7-3358b2519a4a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="18e6262a-80a0-4f71-baeb-36a6937e356a"/> + <where>AB_KEYWORD_ENTRYID = 'ffb1a706-348c-42cd-8b13-6f5e74181ba3'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="18e6262a-80a0-4f71-baeb-36a6937e356a"/> + <where>AB_KEYWORD_ENTRYID = 'a64796f6-e2b7-4c36-b9da-13df09d9ffed'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="18e6262a-80a0-4f71-baeb-36a6937e356a"/> + <where>AB_KEYWORD_ENTRYID = '3d0af900-1ab6-4725-bf39-b80581d3907f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="3d8699cb-e0a0-483a-b52d-d5bdfe2ed336"/> + <where>AB_KEYWORD_ENTRYID = 'dd955f03-a36d-4217-9449-aa05dcc1e51a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="3d8699cb-e0a0-483a-b52d-d5bdfe2ed336"/> + <where>AB_KEYWORD_ENTRYID = '6d361b4d-5cc6-48eb-83ee-4a8573ad466a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="3d8699cb-e0a0-483a-b52d-d5bdfe2ed336"/> + <where>AB_KEYWORD_ENTRYID = '32f48ab8-691e-49e6-951b-be088e7c60ff'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e22ca44f-5d2d-47b6-a844-6801fb6b877f"/> + <where>AB_KEYWORD_ENTRYID = 'd5b80d62-9c28-4267-ad46-da6bdc021c28'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e22ca44f-5d2d-47b6-a844-6801fb6b877f"/> + <where>AB_KEYWORD_ENTRYID = '0914014a-1b85-49dc-9d12-4fcb3ebb6e4a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e22ca44f-5d2d-47b6-a844-6801fb6b877f"/> + <where>AB_KEYWORD_ENTRYID = '5c94a850-4025-4981-b6bf-0eda7680c820'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="598681d4-5649-4a9d-b918-f35fd69a2b0f"/> + <where>AB_KEYWORD_ENTRYID = 'ace4957a-fff8-4137-9670-a66dafd95f6f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="598681d4-5649-4a9d-b918-f35fd69a2b0f"/> + <where>AB_KEYWORD_ENTRYID = 'd0ff5f49-00ee-40c1-ac24-ee52d72590cd'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="5a49ccc0-bf6b-4842-81d9-78d8841c66a2"/> + <where>AB_KEYWORD_ENTRYID = 'a33d4ac6-0aa4-4f43-9d9f-b096cd49bd6f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="5a49ccc0-bf6b-4842-81d9-78d8841c66a2"/> + <where>AB_KEYWORD_ENTRYID = '3225b41e-43e1-4e5d-bfdd-1c595d1a5610'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="288cd7a1-3cdb-43bc-8832-ffb58e651956"/> + <where>AB_KEYWORD_ENTRYID = '538d03cc-8535-474a-bf16-05e654815863'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="288cd7a1-3cdb-43bc-8832-ffb58e651956"/> + <where>AB_KEYWORD_ENTRYID = 'c3c66fa1-185e-40c5-8ff7-3e7b02466ed1'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="50ecc8e7-15e3-4a40-8028-d6de5241b88e"/> + <where>AB_KEYWORD_ENTRYID = '678f61e5-ef27-4e1c-b52b-0e19188b038d'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="50ecc8e7-15e3-4a40-8028-d6de5241b88e"/> + <where>AB_KEYWORD_ENTRYID = 'f568c222-7ac5-475e-b916-cea0e0e8612a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="50ecc8e7-15e3-4a40-8028-d6de5241b88e"/> + <where>AB_KEYWORD_ENTRYID = 'b5f402a0-29a0-43e9-8db3-454fdbcfc9d1'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="50ecc8e7-15e3-4a40-8028-d6de5241b88e"/> + <where>AB_KEYWORD_ENTRYID = '1c40a2de-e6c1-469b-b324-d7089893ca5c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="dbd944bc-0c18-4acc-b4da-2cf382309459"/> + <where>AB_KEYWORD_ENTRYID = '0fdcfc0f-ba82-4881-813d-9f169339ab57'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="dbd944bc-0c18-4acc-b4da-2cf382309459"/> + <where>AB_KEYWORD_ENTRYID = '6aaddcc6-a94e-4267-a52e-f0dd1df62023'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="dbd944bc-0c18-4acc-b4da-2cf382309459"/> + <where>AB_KEYWORD_ENTRYID = '1290323b-82d4-4f34-95d7-44c453eef3bb'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="dbd944bc-0c18-4acc-b4da-2cf382309459"/> + <where>AB_KEYWORD_ENTRYID = '6f35ab82-7905-472a-b635-954bd5fac1e5'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="dbd944bc-0c18-4acc-b4da-2cf382309459"/> + <where>AB_KEYWORD_ENTRYID = 'faa99798-c68f-435a-95d5-77bcd2bbabef'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="38df36cd-2600-4397-a272-0defa1e79e5c"/> + <where>AB_KEYWORD_ENTRYID = '5e5524d7-c8be-4bd2-b9cf-1974d8c7a2f5'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="38df36cd-2600-4397-a272-0defa1e79e5c"/> + <where>AB_KEYWORD_ENTRYID = '9882b909-b952-4f47-ac63-bb49f8c8eb6a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="38df36cd-2600-4397-a272-0defa1e79e5c"/> + <where>AB_KEYWORD_ENTRYID = '383aa333-cc14-4ea5-9baf-23aaa7d7ec4e'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="38df36cd-2600-4397-a272-0defa1e79e5c"/> + <where>AB_KEYWORD_ENTRYID = '0d9eab1f-8e07-4b0d-a92b-bdc6a5b3bd18'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="38df36cd-2600-4397-a272-0defa1e79e5c"/> + <where>AB_KEYWORD_ENTRYID = '18abd018-4eb4-44ae-b0c0-0e63ad6286b1'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="0c4c05b5-8294-441f-84d4-3424f1c38732"/> + <where>AB_KEYWORD_ENTRYID = 'b5087465-4a80-4f2e-8515-7598fea11f56'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="0c4c05b5-8294-441f-84d4-3424f1c38732"/> + <where>AB_KEYWORD_ENTRYID = '460f37dd-2589-499f-89be-7184ff5e0c8a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="63530dfc-c3e6-447b-b3ed-b52adae42a68"/> + <where>AB_KEYWORD_ENTRYID = '8898350e-fd68-45b5-97d6-618d867e53b7'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="63530dfc-c3e6-447b-b3ed-b52adae42a68"/> + <where>AB_KEYWORD_ENTRYID = 'f2fb362a-97d3-4c1d-8496-20abc99973ec'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ad91fa20-157b-4e57-b9ad-1281e40024b3"/> + <where>AB_KEYWORD_ENTRYID = '49dc7423-21c7-47b1-ac1e-b01e8eb5c822'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e685dcfe-cbf9-4a3f-b45f-3f449779a48f"/> + <where>AB_KEYWORD_ENTRYID = 'a18e7a37-c5f6-4f7b-8db6-3018dedbd43f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e685dcfe-cbf9-4a3f-b45f-3f449779a48f"/> + <where>AB_KEYWORD_ENTRYID = '9f11c52f-4c79-4027-877a-0f6eb828fa22'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e23c8316-d43a-4606-803e-d4488823cc52"/> + <where>AB_KEYWORD_ENTRYID = '0d30ed22-bb79-450a-a027-6786e7bb6028'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="35d717d5-4260-4a33-8183-a430e3624822"/> + <where>AB_KEYWORD_ENTRYID = '50b50394-6d77-4ded-a76c-1e07c08bbdcb'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="35d717d5-4260-4a33-8183-a430e3624822"/> + <where>AB_KEYWORD_ENTRYID = '4c851554-2cef-4e0d-823b-bf225b084964'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="35d717d5-4260-4a33-8183-a430e3624822"/> + <where>AB_KEYWORD_ENTRYID = '3c075444-1ded-4fbd-8095-e3a71ade1f44'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '0a3970d9-c08e-48f2-97b7-8b62bd2df79a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '305a6c15-9fb8-46f0-8855-cfcf3ac1fbe7'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '4bec1be3-13c4-42d8-9e88-a351fdddf5ba'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '102ddb10-a355-4487-9478-33d816eaff7a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '0bf9fd30-8e88-460b-bbcd-fcc8b66c1a95'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = 'eeb1b0db-af21-4318-8517-ced5eaad8476'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '480de65f-73e8-4108-af2e-009b442613b0'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '9df3b34f-8b63-4360-bb56-8be43c689db6'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '8579a002-c7f4-4755-ab06-4011ac659760'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '64c307b5-9794-4671-b0ff-ce483ec2e604'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '6ace6e7c-6a9f-44d8-9cca-67ce7dad2aee'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = 'da3acc3a-457e-4c88-a477-8abdaf819539'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '2e7952b1-56a8-484d-9d82-564236c30d20'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '96534736-0247-4596-a8db-f6d7eee611c5'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '9ed26d58-cc2f-436e-b67b-afbb9f102bf4'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '52bad941-02be-4c63-94a7-979e8ecef0c9'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '8bf354dc-4278-493e-9824-40367382290f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '97e27378-e733-4629-b0c4-515faf89da7e'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = 'bc4e4390-e1b9-4054-8ffd-6fd7b1b5096a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '2aec9eed-a4f2-473a-8ae0-563706eb6cd4'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '9e2da66c-380c-40a4-9104-722015ff4b70'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '019fcac3-4eb2-45ff-a936-c59da4a2da04'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = 'a4872b5e-8b41-4b93-a663-fd7aa748b3a7'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = 'c92b180a-a7d7-4c0c-8fbb-ce8abcd5214d'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '6164631f-3378-412d-8c80-8be0aaca7c77'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '6164631f-3378-412d-8c80-8be0aaca7c65'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="8ef58a64-8905-4d5d-b965-40c7e12a0b1e"/> + <where>AB_KEYWORD_ENTRYID = '81fdc4ce-b45c-4481-b9cc-77f69a46a465'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="8ef58a64-8905-4d5d-b965-40c7e12a0b1e"/> + <where>AB_KEYWORD_ENTRYID = '31a341e0-fce1-4efe-be3f-611166ad83be'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="8ef58a64-8905-4d5d-b965-40c7e12a0b1e"/> + <where>AB_KEYWORD_ENTRYID = 'dc700194-78c3-4a34-a196-4f0d8e19f0d5'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="8ef58a64-8905-4d5d-b965-40c7e12a0b1e"/> + <where>AB_KEYWORD_ENTRYID = '5dd157b1-19e4-4b76-8483-b9eb53fa71eb'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="380983a1-f0b2-4d0b-b38b-5c889079e414"/> + <where>AB_KEYWORD_ENTRYID = 'c823c666-ca18-4795-9f2d-d9dbfb7d4028'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="380983a1-f0b2-4d0b-b38b-5c889079e414"/> + <where>AB_KEYWORD_ENTRYID = '30b9c5d2-0aa2-489d-8746-ddb53d6e235d'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="380983a1-f0b2-4d0b-b38b-5c889079e414"/> + <where>AB_KEYWORD_ENTRYID = '5101860e-84c9-49ae-8947-383c0c819090'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="380983a1-f0b2-4d0b-b38b-5c889079e414"/> + <where>AB_KEYWORD_ENTRYID = 'b72d5352-7de0-4d54-89db-c4e2e87352c9'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="3b0a4044-9cfd-4466-9edd-50876a926e76"/> + <where>AB_KEYWORD_ENTRYID = '56e9b1a8-2ccd-4a48-8563-70d31ac108cf'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="a5206aff-79f8-413e-a76d-4cb9d39694d3"/> + <where>AB_KEYWORD_ENTRYID = '5506389d-b2ba-4774-9fa0-8e68f95816a0'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="a5206aff-79f8-413e-a76d-4cb9d39694d3"/> + <where>AB_KEYWORD_ENTRYID = 'ddb8d043-f207-41b8-987c-7f539eb5c2eb'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ed197cdf-bdd1-4e95-b910-dca348abf3be"/> + <where>AB_KEYWORD_ENTRYID = '78367cf3-111a-4852-9a4f-a505ad2953cd'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ed197cdf-bdd1-4e95-b910-dca348abf3be"/> + <where>AB_KEYWORD_ENTRYID = '94cc11ec-a384-439f-b5c7-70d7168959a5'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ed197cdf-bdd1-4e95-b910-dca348abf3be"/> + <where>AB_KEYWORD_ENTRYID = 'd8b78606-30bf-4633-9aaf-4da691ef6d8f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ENTRYID = '579e1798-acd0-4fa6-8dbc-02c533e741f3'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ENTRYID = 'f472f6f9-d603-42d3-a413-6b549f4c2aa4'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ENTRYID = 'de02cd0d-b3ab-43e0-ae2f-f1b76e2323d1'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ENTRYID = '012f38fa-c7ee-4898-bed5-4652459dab23'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ENTRYID = '4b9e19fb-0385-4033-8a03-6d37c43c6b01'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ENTRYID = '7e5ab737-a3e6-463c-974e-eb6021730d4a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ENTRYID = '5e46546a-ee2e-41a2-b87f-a55e4c88df87'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ENTRYID = 'ab66f18f-040d-44c1-b08c-949fa3928e37'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ENTRYID = '4eba5820-4c2d-4a77-95d2-c6f12843d02c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ENTRYID = '7fff1c17-66a0-44ec-a6f1-f0364602c0de'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ENTRYID = '7a32adf8-13ac-4943-a443-4d2f5340a8a5'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ENTRYID = '22c13c1e-1c26-42b6-8e24-c522ec7f16a9'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ENTRYID = '50cb1b5f-2215-40e8-aa1e-daf34dc8a06b'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ENTRYID = 'f7f73dec-b461-4bb4-8d72-4cb63909dbba'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ENTRYID = 'bd4300ce-8e9b-4efc-b995-8477ab374fc3'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="c03a5abe-0f21-41a3-8506-9b13db7ea407"/> + <where>AB_KEYWORD_ENTRYID = '5534a8d8-da1d-4448-835a-97cdcfee8907'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="30d87734-9229-460d-abf4-73ce73466534"/> + <where>AB_KEYWORD_ENTRYID = '9d427420-2c87-4ada-9349-a799972bda0f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="30d87734-9229-460d-abf4-73ce73466534"/> + <where>AB_KEYWORD_ENTRYID = '2f740f93-12ed-4e22-a158-adba5da81b40'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="30d87734-9229-460d-abf4-73ce73466534"/> + <where>AB_KEYWORD_ENTRYID = 'dd276100-b867-489c-8128-a3b71aa7564f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="7147c61b-962d-426c-84a2-aaa381aeab8b"/> + <where>AB_KEYWORD_ENTRYID = '91d7417e-fd45-429e-9ce9-a46f25c0c1d1'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="7147c61b-962d-426c-84a2-aaa381aeab8b"/> + <where>AB_KEYWORD_ENTRYID = 'c0147b73-f678-4136-b3c4-0fde7e943a84'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="7147c61b-962d-426c-84a2-aaa381aeab8b"/> + <where>AB_KEYWORD_ENTRYID = '4ac4c7e1-d73b-4a26-9a6d-bc06505b9611'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="7147c61b-962d-426c-84a2-aaa381aeab8b"/> + <where>AB_KEYWORD_ENTRYID = 'facb77a6-5bc1-4e2f-8dd0-72200b57c326'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="7147c61b-962d-426c-84a2-aaa381aeab8b"/> + <where>AB_KEYWORD_ENTRYID = '036cbf6f-a8bd-4f25-b885-f1a689927bf1'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f0abc80c-7d9d-4bb5-8d41-d204550a028e"/> + <where>AB_KEYWORD_ENTRYID = '17905c4d-1c88-4cee-83da-164c13bbe848'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f0abc80c-7d9d-4bb5-8d41-d204550a028e"/> + <where>AB_KEYWORD_ENTRYID = '2f162837-868a-4517-810e-677cd423be56'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e35fdba2-11ba-4d8c-b443-5ab49a19dcc1"/> + <where>AB_KEYWORD_ENTRYID = 'b6618b25-ec10-413f-9048-a5d8e792d161'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="e35fdba2-11ba-4d8c-b443-5ab49a19dcc1"/> + <where>AB_KEYWORD_ENTRYID = '45738bd4-1d7f-46b1-a863-93d183bbd238'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ecfee92f-0563-44be-98f5-1c304df8d9d0"/> + <where>AB_KEYWORD_ENTRYID = 'f241b36a-c2fe-40be-9e2e-8293c700d096'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="ecfee92f-0563-44be-98f5-1c304df8d9d0"/> + <where>AB_KEYWORD_ENTRYID = '00a72718-554e-46ab-b83c-fb9b81be4be6'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="50ecc8e7-15e3-4a40-8028-d6de5241b88e"/> + <where>AB_KEYWORD_ENTRYID = 'daa6d8d8-fdc6-4fb2-9677-9ccc1f8a9b81'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="b3765719-9d07-41c4-a813-18bc9056db1a"/> + <where>AB_KEYWORD_ENTRYID = '66d1563a-a76c-47ca-af6b-38586a2f3ce3'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="0e8217d7-6712-4c16-80d4-d5c9c26a4f47"/> + <where>AB_KEYWORD_ENTRYID = 'e36f44a3-88b6-4b1d-a77a-0108b8165b9b'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '8c24ac4a-23cc-4a16-98a0-362e72b77977'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = 'cb227318-924a-4df4-af98-eb6814ce21a1'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = 'b1cdbbda-5181-4dbd-b786-4d180c1248aa'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = 'dd5abf99-b43d-4b3d-b4b0-376c70572490'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '345fe723-73dc-4687-afd2-c4ebc16aebdc'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '370672a7-946a-43b6-98dd-532422bef388'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '01f18fd8-44c1-43ec-8601-bf1fe7e62700'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '504d48d1-1a0d-437a-adc9-38501679137a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = 'fde1a4d1-d77e-494c-a1e4-2ef82abec246'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f2cc6b40-1c1c-4207-93a3-0e225e2630c7"/> + <where>AB_KEYWORD_ENTRYID = '53e06704-e28d-49b5-a49f-e40ca250ee6a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f118b0c3-c65f-4c83-8f5a-cb885fa3323a"/> + <where>AB_KEYWORD_ENTRYID = 'DISCUSSIONACTIVE '</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="f118b0c3-c65f-4c83-8f5a-cb885fa3323a"/> + <where>AB_KEYWORD_ENTRYID = 'DISCUSSIONCLOSED '</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6a4a5250-6231-4bf7-8c16-bb5994c4e2d0"/> + <where>AB_KEYWORD_ENTRYID = 'KNOWLEDGEBASE '</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="6a4a5250-6231-4bf7-8c16-bb5994c4e2d0"/> + <where>AB_KEYWORD_ENTRYID = 'EDITORIAL '</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="37f65755-e1c9-4912-a7d3-2922c754ed8d"/> + <where>AB_KEYWORD_ENTRYID = 'INTERNAL '</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="37f65755-e1c9-4912-a7d3-2922c754ed8d"/> + <where>AB_KEYWORD_ENTRYID = 'PARTNER '</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="37f65755-e1c9-4912-a7d3-2922c754ed8d"/> + <where>AB_KEYWORD_ENTRYID = 'PUBLIC '</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="623bdc81-a99b-4865-958e-85abd0ed9b6a"/> + <where>AB_KEYWORD_ENTRYID = '70f352e7-81dc-4d44-9f12-30bfc2cc39f1'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="623bdc81-a99b-4865-958e-85abd0ed9b6a"/> + <where>AB_KEYWORD_ENTRYID = '1b6b5070-8028-42f9-abfd-ee64142801d1'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="9d1cb7d0-931e-4d5c-a54f-e5c917228157"/> + <where>AB_KEYWORD_ENTRYID = '9531f6ba-dbbc-43c2-ba7a-761c6e44ca3b'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="9d1cb7d0-931e-4d5c-a54f-e5c917228157"/> + <where>AB_KEYWORD_ENTRYID = 'b063bd18-0f60-4e5f-b153-62acb984a4b2'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="1fa14f21-6aad-4bea-9106-7265db39e052"/> + <where>AB_KEYWORD_ENTRYID = '97c73c26-c90e-410b-8732-47cbeaf986df'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="1fa14f21-6aad-4bea-9106-7265db39e052"/> + <where>AB_KEYWORD_ENTRYID = '8d853c34-0896-45db-989d-131a15bd0c6a'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="1fa14f21-6aad-4bea-9106-7265db39e052"/> + <where>AB_KEYWORD_ENTRYID = '40212bc7-df71-4131-965b-344e6baf7c57'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="1fa14f21-6aad-4bea-9106-7265db39e052"/> + <where>AB_KEYWORD_ENTRYID = 'df052065-a32d-4c17-a229-60abcaf2736f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="1fa14f21-6aad-4bea-9106-7265db39e052"/> + <where>AB_KEYWORD_ENTRYID = '3b080d0e-9301-47f2-9ead-10f2b5aaf701'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="1fa14f21-6aad-4bea-9106-7265db39e052"/> + <where>AB_KEYWORD_ENTRYID = 'a343cbe0-af9c-464c-861e-65f00eab392f'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="14adf8de-aa3a-4c89-99bd-49477c2fa8a6"/> + <where>AB_KEYWORD_ENTRYID = '264b8a1c-45c8-4b41-9d11-4b6fb538b79c'</where> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" value="14adf8de-aa3a-4c89-99bd-49477c2fa8a6"/> + <where>AB_KEYWORD_ENTRYID = '0af9044d-6eeb-4db0-be95-91e63a30aa19'</where> + </update> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2021.0.0/Keywords/add_keywordCategory.xml b/.liquibase/Data_alias/basic/2021.0.0/Keywords/add_keywordCategory.xml new file mode 100644 index 0000000000000000000000000000000000000000..4ba2d4ae0fc3b21ee08afe99dbea8a804e6cd114 --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.0.0/Keywords/add_keywordCategory.xml @@ -0,0 +1,20 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="t.lutzenberger" id="d0da3801-e570-40ab-97ec-9f7946f7229c"> + <createTable tableName="AB_KEYWORD_CATEGORY"> + <column name="AB_KEYWORD_CATEGORYID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_KEYWORDCATEGORY_KEYWORDCATEGORYID"/> + </column> + <column name="NAME" type="VARCHAR(80)"> + <constraints nullable="false"/> + </column> + <column name="SORTINGBY" type="INTEGER"> + <constraints nullable="false"/> + </column> + <column name="SORTINGDIRECTION" type="VARCHAR(4)"> + <constraints nullable="false"/> + </column> + </createTable> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2021.0.0/Keywords/changelog.xml b/.liquibase/Data_alias/basic/2021.0.0/Keywords/changelog.xml new file mode 100644 index 0000000000000000000000000000000000000000..f7518d51df313cea8d5a12e4842c467033466ffe --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.0.0/Keywords/changelog.xml @@ -0,0 +1,7 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <include relativeToChangelogFile="true" file="add_keywordCategory.xml"/> + <include relativeToChangelogFile="true" file="update_keywordEntry.xml"/> + <include relativeToChangelogFile="true" file="update_keywordAttribute.xml"/> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2021.0.0/Keywords/update_keywordAttribute.xml b/.liquibase/Data_alias/basic/2021.0.0/Keywords/update_keywordAttribute.xml new file mode 100644 index 0000000000000000000000000000000000000000..b75f38f1225374b99e81ef181f0836cb864d1bd8 --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.0.0/Keywords/update_keywordAttribute.xml @@ -0,0 +1,12 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="t.lutzenberger" id="a3c9ffe8-f7e0-4924-856a-73ecea202750"> + <addColumn tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_CATEGORY_ID" type="CHAR(36)" /> + </addColumn> + <dropNotNullConstraint tableName="AB_KEYWORD_ATTRIBUTE" + columnName="CONTAINER" + columnDataType="VARCHAR(80)"/> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2021.0.0/Keywords/update_keywordEntry.xml b/.liquibase/Data_alias/basic/2021.0.0/Keywords/update_keywordEntry.xml new file mode 100644 index 0000000000000000000000000000000000000000..e45e792dbb96364b3b15a05be548452110001a70 --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.0.0/Keywords/update_keywordEntry.xml @@ -0,0 +1,12 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="t.lutzenberger" id="58652a09-7d8e-4a9d-995e-04eb8bcbc7cf"> + <addColumn tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_CATEGORY_ID" type="CHAR(36)"/> + </addColumn> + <dropNotNullConstraint tableName="AB_KEYWORD_ENTRY" + columnName="CONTAINER" + columnDataType="VARCHAR(80)"/> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2021.0.0/changelog.xml b/.liquibase/Data_alias/basic/2021.0.0/changelog.xml index 610a807e257c9da7317a73c9ec0852d04af3956d..21d9b6123c339868f578deb1c41f89eb8269b0d3 100644 --- a/.liquibase/Data_alias/basic/2021.0.0/changelog.xml +++ b/.liquibase/Data_alias/basic/2021.0.0/changelog.xml @@ -11,6 +11,8 @@ <include relativeToChangelogFile="true" file="MissingIndizes/add_MissingIndizes.xml"/> <include relativeToChangelogFile="true" file="SalesprojectConversion/changelog.xml"/> <include relativeToChangelogFile="true" file="Checklists/changelog.xml"/> + <include relativeToChangelogFile="true" file="Keywords/changelog.xml"/> + <include relativeToChangelogFile="true" file="KeywordMigration/changelog.xml"/> <include relativeToChangelogFile="true" file="addDateNewToSalesproject.xml"/> <include relativeToChangelogFile="true" file="EwsContactSync/create_ab_synccontact.xml"/> </databaseChangeLog> \ No newline at end of file diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index f8f3974c8a9932fe6ae60ba9a663605d2109a19b..e7fffbd3b79ae5520b1b56ed1c7870d518399740 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -6550,7 +6550,7 @@ <columnType v="12" /> <size v="80" /> <scale v="0" /> - <notNull v="true" /> + <notNull v="false" /> <isUnique v="false" /> <index v="true" /> <documentation></documentation> @@ -6662,6 +6662,20 @@ <title>Keyword entry Id</title> <description></description> </entityFieldDb> + <entityFieldDb> + <name>AB_KEYWORD_CATEGORY_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -6876,6 +6890,19 @@ </customBooleanProperty> </customProperties> </entityFieldDb> + <entityFieldDb> + <name>AB_KEYWORD_CATEGORY_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -17276,6 +17303,82 @@ </entityFieldDb> </entityFields> </entityDb> + <entityDb> + <name>AB_KEYWORD_CATEGORY</name> + <dbName></dbName> + <idColumn>AB_KEYWORD_CATEGORYID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>SORTINGBY</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="4" /> + <size v="10" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>AB_KEYWORD_CATEGORYID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>SORTINGDIRECTION</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="4" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>NAME</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="80" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> <entityDb> <name>MST_TEAMLINK</name> <dbName></dbName> diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod index 67fea87c6b342c576f58aa9afbaeaec8940b567c..56f31da9f97db53dd72583e0cb8631a0a3527050 100644 --- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod +++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod @@ -285,6 +285,10 @@ <name>Attribute</name> <kind v="10077" /> </entityNode> + <entityNode> + <name>KeywordCategory</name> + <kind v="10077" /> + </entityNode> <entityNode> <name>KeywordEntry</name> <kind v="10077" /> diff --git a/entity/AddressType_entity/recordcontainers/db/conditionProcess.js b/entity/AddressType_entity/recordcontainers/db/conditionProcess.js index 6e937ecf4c22f7a5bb99a4320ddb55e7a32590f0..691754513ccf84a63b97421354597a140f80d079 100644 --- a/entity/AddressType_entity/recordcontainers/db/conditionProcess.js +++ b/entity/AddressType_entity/recordcontainers/db/conditionProcess.js @@ -5,7 +5,7 @@ import("KeywordRegistry_basic"); import("Sql_lib"); import("Keyword_lib"); -var cond = newWhere("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.addressType()); +var cond = newWhere("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", KeywordUtils.getCategoryIdByName($KeywordRegistry.addressType())); var usageFilter = vars.get("$param.UsageFilter_param"); @@ -16,6 +16,7 @@ if (usageFilter) cond.and("AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID", keywordAttribute.getSqlBuilderSelect().and(["AB_KEYWORD_ATTRIBUTERELATION", keywordAttribute.dbField], "1"), SqlBuilder.IN()) + .and("AB_KEYWORD_ENTRY.ISACTIVE", "1"); } result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js b/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js index bafe6c4d6176c505dd8e202d89ae7544d0bd4bb9..fc5d866e8a6eaa30ab0ed76e2105c1091a699b95 100644 --- a/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js @@ -1,3 +1,4 @@ +import("Keyword_lib"); import("Sql_lib"); import("system.result"); import("KeywordRegistry_basic"); @@ -5,6 +6,6 @@ import("KeywordRegistry_basic"); result.string(new SqlBuilder() .from("COMMUNICATION") .leftJoin("AB_KEYWORD_ENTRY", newWhere("COMMUNICATION.MEDIUM_ID = AB_KEYWORD_ENTRY.KEYID") - .and("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.communicationMedium())) + .and("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", KeywordUtils.getCategoryIdByName($KeywordRegistry.communicationMedium()))) .toString() ); \ No newline at end of file diff --git a/entity/DistrictResponsible_entity/entityfields/adviserstates/children/excludedkeyidssubquery_param/valueProcess.js b/entity/DistrictResponsible_entity/entityfields/adviserstates/children/excludedkeyidssubquery_param/valueProcess.js index 15b73f9705dc456af35c5d5e144cf88c436a79eb..a79aeb2fc8911e2643259d18c3b7415c01669c2a 100644 --- a/entity/DistrictResponsible_entity/entityfields/adviserstates/children/excludedkeyidssubquery_param/valueProcess.js +++ b/entity/DistrictResponsible_entity/entityfields/adviserstates/children/excludedkeyidssubquery_param/valueProcess.js @@ -1,10 +1,11 @@ +import("Keyword_lib"); import("system.result"); import("KeywordRegistry_basic"); import("Sql_lib"); var cond = newSelect("AB_KEYWORD_ENTRY.KEYID") .from("AB_KEYWORD_ENTRY") -.where("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.contactStatus()) +.where("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", KeywordUtils.getCategoryIdByName($KeywordRegistry.contactStatus())) .and("AB_KEYWORD_ENTRY.KEYID", $KeywordRegistry.contactStatus$inReview(), SqlBuilder.LIKE()); result.string(cond.toString()); \ No newline at end of file diff --git a/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js b/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js index 0cec405b433c9f43d6e536f471fb001b9da9ac43..df6501d2c3622d1f5a3cbc9c15c7ae99926347f6 100644 --- a/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js +++ b/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js @@ -5,7 +5,7 @@ import("KeywordRegistry_basic"); import("Sql_lib"); import("Keyword_lib"); -var cond = newWhere("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.documentTemplateTypeCategory()); +var cond = newWhere("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", KeywordUtils.getCategoryIdByName($KeywordRegistry.documentTemplateTypeCategory())); var usageFilter = vars.get("$param.usageFilter_param"); if (usageFilter) diff --git a/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/orderClauseProcess.js b/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/orderClauseProcess.js index e32403dc6e2df5902c3faeaf8f155a3b41a0f405..3685b526a66a8990d8b94682e3e39617ebfe5a66 100644 --- a/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/orderClauseProcess.js +++ b/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/orderClauseProcess.js @@ -2,7 +2,6 @@ import("system.db"); import("system.result"); result.object({ - "AB_KEYWORD_ENTRY.CONTAINER": db.ASCENDING - ,"AB_KEYWORD_ENTRY.SORTING": db.ASCENDING + "AB_KEYWORD_ENTRY.SORTING": db.ASCENDING ,"AB_KEYWORD_ENTRY.TITLE": db.ASCENDING }); \ No newline at end of file diff --git a/entity/KeywordAttributeRelation_entity/entityfields/containername_param/valueProcess.js b/entity/KeywordAttributeRelation_entity/entityfields/containername_param/valueProcess.js index 77a772ba0e557111e7457572056a741675682979..42e2a5a45c5eb4c5e8ddaaa54013e3ae86c21281 100644 --- a/entity/KeywordAttributeRelation_entity/entityfields/containername_param/valueProcess.js +++ b/entity/KeywordAttributeRelation_entity/entityfields/containername_param/valueProcess.js @@ -4,8 +4,9 @@ import("system.vars"); import("Sql_lib"); var entryId = vars.get("$param.KeywordEntryId_param"); -var containerName = newSelect("AB_KEYWORD_ENTRY.CONTAINER") +var containerName = newSelect("AB_KEYWORD_CATEGORY.NAME") .from("AB_KEYWORD_ENTRY") + .join("AB_KEYWORD_CATEGORY", "AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID = AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID") .where("AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID", entryId) .cell(); diff --git a/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod b/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod index 0f89a75d32ff06d51dad304868d18f9dfc56ac49..f323e21738e421a8a016ff2f8baccc78f185722e 100644 --- a/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod +++ b/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod @@ -18,12 +18,6 @@ <name>AB_KEYWORD_ATTRIBUTEID</name> <valueProcess>%aditoprj%/entity/KeywordAttribute_entity/entityfields/ab_keyword_attributeid/valueProcess.js</valueProcess> </entityField> - <entityField> - <name>CONTAINER</name> - <title>Container</title> - <mandatory v="true" /> - <dropDownProcess>%aditoprj%/entity/KeywordAttribute_entity/entityfields/container/dropDownProcess.js</dropDownProcess> - </entityField> <entityField> <name>NAME</name> <title>Name</title> @@ -86,11 +80,27 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>AB_KEYWORD_CATEGORY_ID</name> + <title>Keyword Category</title> + <consumer>KeywordCategoryConsumer</consumer> + <mandatory v="true" /> + <displayValueProcess>%aditoprj%/entity/KeywordAttribute_entity/entityfields/ab_keyword_category_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityConsumer> + <name>KeywordCategoryConsumer</name> + <dependency> + <name>dependency</name> + <entityName>KeywordCategory_entity</entityName> + <fieldName>AllKeywordCategoryProvider</fieldName> + </dependency> + </entityConsumer> </entityFields> <recordContainers> <dbRecordContainer> <name>db</name> <isPageable v="false" /> + <fromClauseProcess>%aditoprj%/entity/KeywordAttribute_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> <conditionProcess>%aditoprj%/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js</conditionProcess> <onDBDelete>%aditoprj%/entity/KeywordAttribute_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <alias>Data_alias</alias> @@ -99,12 +109,6 @@ <name>AB_KEYWORD_ATTRIBUTEID.value</name> <recordfield>AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_ATTRIBUTEID</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CONTAINER.value</name> - <recordfield>AB_KEYWORD_ATTRIBUTE.CONTAINER</recordfield> - <isFilterable v="true" /> - <isLookupFilter v="true" /> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>NAME.value</name> <recordfield>AB_KEYWORD_ATTRIBUTE.NAME</recordfield> @@ -121,15 +125,33 @@ <name>TYPE.displayValue</name> <expression>%aditoprj%/entity/KeywordAttribute_entity/recordcontainers/db/recordfieldmappings/type.displayvalue/expression.js</expression> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>AB_KEYWORD_CATEGORY_ID.value</name> + <recordfield>AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_CATEGORY_ID</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="false" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>AB_KEYWORD_CATEGORY_ID.displayValue</name> + <recordfield>AB_KEYWORD_CATEGORY.NAME</recordfield> + <columnAlias></columnAlias> + </dbRecordFieldMapping> </recordFieldMappings> <linkInformation> <linkInformation> - <name>bd113d67-34ab-4708-b0e5-60a44332e6b8</name> + <name>a59612f2-255c-43df-9046-16f2abbba31d</name> <tableName>AB_KEYWORD_ATTRIBUTE</tableName> <primaryKey>AB_KEYWORD_ATTRIBUTEID</primaryKey> <isUIDTable v="true" /> <readonly v="false" /> </linkInformation> + <linkInformation> + <name>cd0b7116-15a8-45ec-8455-61fd577f7ee8</name> + <tableName>AB_KEYWORD_CATEGORY</tableName> + <primaryKey>AB_KEYWORD_CATEGORYID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> </linkInformation> </dbRecordContainer> </recordContainers> diff --git a/entity/KeywordAttribute_entity/entityfields/ab_keyword_category_id/displayValueProcess.js b/entity/KeywordAttribute_entity/entityfields/ab_keyword_category_id/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..89b5e069dfebf45a710ac11a070f173c70d02bc2 --- /dev/null +++ b/entity/KeywordAttribute_entity/entityfields/ab_keyword_category_id/displayValueProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("system.vars"); +import("Keyword_lib"); + + +var containerName = KeywordUtils.getCategoryNameById(vars.get("$field.AB_KEYWORD_CATEGORY_ID")); + +result.string(containerName); diff --git a/entity/KeywordAttribute_entity/entityfields/container/dropDownProcess.js b/entity/KeywordAttribute_entity/entityfields/container/dropDownProcess.js deleted file mode 100644 index 97ebc5fbaf0bdada4d7571bc882fcdc9fa2d99a5..0000000000000000000000000000000000000000 --- a/entity/KeywordAttribute_entity/entityfields/container/dropDownProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.result"); -import("Keyword_lib"); - -var res = KeywordUtils.getContainerNames().map(function(e){ - return [e, e];//currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers -}); -result.object(res); \ No newline at end of file diff --git a/entity/KeywordAttribute_entity/entityfields/name/onValidation.js b/entity/KeywordAttribute_entity/entityfields/name/onValidation.js index b12c2615dc53fc1a9df233274bbf7eeae2f5caf4..a37ae57cf0a79ef02c3ab3c08f530128bcda2777 100644 --- a/entity/KeywordAttribute_entity/entityfields/name/onValidation.js +++ b/entity/KeywordAttribute_entity/entityfields/name/onValidation.js @@ -10,8 +10,8 @@ import("Entity_lib"); var validation = (function(){ if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW) return null; - var container = vars.get("$field.CONTAINER"); - if (container == "") + var category = vars.get("$field.AB_KEYWORD_CATEGORY_ID"); + if (category == "") return null; var name = vars.get("local.value"); if (name == "") @@ -19,12 +19,12 @@ var validation = (function(){ var alreadyExistingCount = newSelect("count(*)") .from("AB_KEYWORD_ATTRIBUTE") - .where("AB_KEYWORD_ATTRIBUTE.CONTAINER", container) + .where("AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_CATEGORY_ID", category) .and("AB_KEYWORD_ATTRIBUTE.name", name) .cell() if (alreadyExistingCount != "0") - return translate.withArguments("Name \"%0\" already used for container \"%1\"", [name, container]); + return translate.withArguments("Name \"%0\" already used for container \"%1\"", [name, category]); return null; })(); diff --git a/entity/KeywordAttribute_entity/iconIdProcess.js b/entity/KeywordAttribute_entity/iconIdProcess.js index ef0457e780554daacf633e3381aff300f84e713c..4a0b4e8f7c8aacc31d3792851043560747d6b5d3 100644 --- a/entity/KeywordAttribute_entity/iconIdProcess.js +++ b/entity/KeywordAttribute_entity/iconIdProcess.js @@ -1,7 +1,7 @@ import("system.vars"); import("system.result"); -var container = vars.get("$field.CONTAINER"); +var container = vars.get("$field.AB_KEYWORD_CATEGORY_ID.displayValue"); if (container) result.string("TEXT:" + container); \ No newline at end of file diff --git a/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js b/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js index 15f1ee62a401226343c96a26c3a7b084e07a843b..bf912873fef170a0b5ce995f345b3722203e0446 100644 --- a/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js +++ b/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js @@ -3,7 +3,7 @@ import("system.db"); import("system.result"); import("Sql_lib"); -var cond = newWhereIfSet("AB_KEYWORD_ATTRIBUTE.CONTAINER", "$param.ContainerName_param"); +var cond = newWhereIfSet("AB_KEYWORD_CATEGORY.NAME", "$param.ContainerName_param"); //filter for entries that are already used by entry_id var entryIdForFilter = vars.get("$param.FilterAlreadyUsedByEntryId_param"); diff --git a/entity/KeywordAttribute_entity/recordcontainers/db/fromClauseProcess.js b/entity/KeywordAttribute_entity/recordcontainers/db/fromClauseProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..a3e9dcd2e39e3de2b6e0b5b3987809ce130aa54d --- /dev/null +++ b/entity/KeywordAttribute_entity/recordcontainers/db/fromClauseProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("Sql_lib"); + +var res = "AB_KEYWORD_ATTRIBUTE \n\ + join AB_KEYWORD_CATEGORY on (AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID = AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_CATEGORY_ID)"; +result.string(res); \ No newline at end of file diff --git a/entity/KeywordCategory_entity/KeywordCategory_entity.aod b/entity/KeywordCategory_entity/KeywordCategory_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..fb84b88df68c8861fce153afa44801416d21431f --- /dev/null +++ b/entity/KeywordCategory_entity/KeywordCategory_entity.aod @@ -0,0 +1,145 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18"> + <name>KeywordCategory_entity</name> + <title>Keyword Category</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:FILE_TREE_SMALL</icon> + <contentTitleProcess>%aditoprj%/entity/KeywordCategory_entity/contentTitleProcess.js</contentTitleProcess> + <iconId>VAADIN:FILE_TREE_SMALL</iconId> + <titlePlural>Keyword Categories</titlePlural> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + <usePermissions v="false" /> + </entityProvider> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityField> + <name>AB_KEYWORD_CATEGORYID</name> + <valueProcess>%aditoprj%/entity/KeywordCategory_entity/entityfields/ab_keyword_categoryid/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>NAME</name> + <title>Category Name</title> + <mandatory v="true" /> + <onValidation>%aditoprj%/entity/KeywordCategory_entity/entityfields/name/onValidation.js</onValidation> + </entityField> + <entityField> + <name>SORTINGBY</name> + <title>Sorting by</title> + <contentType>TEXT</contentType> + <mandatory v="true" /> + <dropDownProcess>%aditoprj%/entity/KeywordCategory_entity/entityfields/sortingby/dropDownProcess.js</dropDownProcess> + <valueProcess>%aditoprj%/entity/KeywordCategory_entity/entityfields/sortingby/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>SORTINGDIRECTION</name> + <title>Sorting direction</title> + <contentType>TEXT</contentType> + <mandatory v="true" /> + <dropDownProcess>%aditoprj%/entity/KeywordCategory_entity/entityfields/sortingdirection/dropDownProcess.js</dropDownProcess> + <valueProcess>%aditoprj%/entity/KeywordCategory_entity/entityfields/sortingdirection/valueProcess.js</valueProcess> + </entityField> + <entityProvider> + <name>AllKeywordCategoryProvider</name> + <lookupIdfield>AB_KEYWORD_CATEGORYID</lookupIdfield> + <sortingField>NAME</sortingField> + <dependencies> + <entityDependency> + <name>d93010a7-5c20-4144-8efb-8eb43c69b7b1</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>KeywordCategoryConsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityConsumer> + <name>OrderedByNameFieldKeywordsConsumer</name> + <state>INVISIBLE</state> + <stateProcess>%aditoprj%/entity/KeywordCategory_entity/entityfields/orderedbynamefieldkeywordsconsumer/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>OrderedByNameFieldKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/KeywordCategory_entity/entityfields/orderedbynamefieldkeywordsconsumer/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>OrderedBySortingFieldKeywordsConsumer</name> + <state>INVISIBLE</state> + <stateProcess>%aditoprj%/entity/KeywordCategory_entity/entityfields/orderedbysortingfieldkeywordsconsumer/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>OrderedBySortingFieldKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/KeywordCategory_entity/entityfields/orderedbysortingfieldkeywordsconsumer/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>OrderedByNameFieldKeywords</name> + <consumer>OrderedByNameFieldKeywordsConsumer</consumer> + <state>AUTO</state> + </entityField> + <entityField> + <name>OrderedBySortingFieldKeywords</name> + <consumer>OrderedBySortingFieldKeywordsConsumer</consumer> + <state>AUTO</state> + </entityField> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <isPageable v="false" /> + <orderClauseProcess>%aditoprj%/entity/KeywordCategory_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> + <onDBInsert>%aditoprj%/entity/KeywordCategory_entity/recordcontainers/db/onDBInsert.js</onDBInsert> + <onDBUpdate>%aditoprj%/entity/KeywordCategory_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> + <onDBDelete>%aditoprj%/entity/KeywordCategory_entity/recordcontainers/db/onDBDelete.js</onDBDelete> + <alias>Data_alias</alias> + <cacheType>GLOBAL</cacheType> + <cacheKeyProcess>%aditoprj%/entity/KeywordCategory_entity/recordcontainers/db/cacheKeyProcess.js</cacheKeyProcess> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>NAME.value</name> + <recordfield>AB_KEYWORD_CATEGORY.NAME</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>AB_KEYWORD_CATEGORYID.value</name> + <recordfield>AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID</recordfield> + <isFilterable v="false" /> + <isLookupFilter v="false" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SORTINGBY.value</name> + <recordfield>AB_KEYWORD_CATEGORY.SORTINGBY</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SORTINGDIRECTION.value</name> + <recordfield>AB_KEYWORD_CATEGORY.SORTINGDIRECTION</recordfield> + </dbRecordFieldMapping> + </recordFieldMappings> + <linkInformation> + <linkInformation> + <name>bd5b5591-863e-4e4d-8ac0-339112c7cbb8</name> + <tableName>AB_KEYWORD_CATEGORY</tableName> + <primaryKey>AB_KEYWORD_CATEGORYID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + </linkInformation> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/KeywordCategory_entity/contentTitleProcess.js b/entity/KeywordCategory_entity/contentTitleProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b270484a61c2a2ac80e254287f1bac8d4c3474aa --- /dev/null +++ b/entity/KeywordCategory_entity/contentTitleProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); + + +result.string(vars.get("$field.NAME")); \ No newline at end of file diff --git a/entity/KeywordCategory_entity/entityfields/ab_keyword_categoryid/valueProcess.js b/entity/KeywordCategory_entity/entityfields/ab_keyword_categoryid/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ad93cec3bf8be83cc92959219f4f810752413b7d --- /dev/null +++ b/entity/KeywordCategory_entity/entityfields/ab_keyword_categoryid/valueProcess.js @@ -0,0 +1,9 @@ +import("system.neon"); +import("system.result"); +import("system.util"); +import("system.vars"); + + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { + result.string(util.getNewUUID()); +} diff --git a/entity/KeywordCategory_entity/entityfields/name/onValidation.js b/entity/KeywordCategory_entity/entityfields/name/onValidation.js new file mode 100644 index 0000000000000000000000000000000000000000..e457534d5fe64d2a9f91cd940b2a6fdb7e560ea2 --- /dev/null +++ b/entity/KeywordCategory_entity/entityfields/name/onValidation.js @@ -0,0 +1,23 @@ +import("system.translate"); +import("system.result"); +import("system.db"); +import("system.vars"); +import("Sql_lib"); +import("Entity_lib"); + +var name = vars.get("local.value") + +//a KEY has always to be unique within one categoryId and since the user can specify the key on insert we've to ensure that it's unique +if (name) +{ + var uid = vars.get("$field.AB_KEYWORD_CATEGORYID"); + var alreadyExistantCount = newSelect("count(*)") + .from("AB_KEYWORD_CATEGORY") + .where("AB_KEYWORD_CATEGORY.NAME", name) + .andIfSet("AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID", uid, SqlBuilder.NOT_EQUAL()) + .cell(); + + if (alreadyExistantCount != "0") + result.string(translate.text("The given Keyword Category Name is already used but needs to be unique")); + +} \ No newline at end of file diff --git a/entity/KeywordCategory_entity/entityfields/orderedbynamefieldkeywordsconsumer/children/containername_param/valueProcess.js b/entity/KeywordCategory_entity/entityfields/orderedbynamefieldkeywordsconsumer/children/containername_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..a7b35e011264275c0614ce65e3c70b2ac848746d --- /dev/null +++ b/entity/KeywordCategory_entity/entityfields/orderedbynamefieldkeywordsconsumer/children/containername_param/valueProcess.js @@ -0,0 +1,7 @@ +import("system.util"); +import("system.result"); +import("system.vars"); + +//use the given keyword category name or use a dummy value, so that we do not get all Keyword entires from the KeywordEntry_entity (empty means "all" there) +var res = vars.get("$field.NAME") || util.getNewUUID(); +result.string(res); diff --git a/entity/KeywordCategory_entity/entityfields/orderedbynamefieldkeywordsconsumer/stateProcess.js b/entity/KeywordCategory_entity/entityfields/orderedbynamefieldkeywordsconsumer/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..96c49cb7507ce3557f4bc5bbd967b91044a745c6 --- /dev/null +++ b/entity/KeywordCategory_entity/entityfields/orderedbynamefieldkeywordsconsumer/stateProcess.js @@ -0,0 +1,9 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); + + +if (vars.get("$field.SORTINGBY") === "0" || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(neon.COMPONENTSTATE_INVISIBLE); +else + result.string(neon.COMPONENTSTATE_EDITABLE); diff --git a/entity/KeywordCategory_entity/entityfields/orderedbysortingfieldkeywordsconsumer/children/containername_param/valueProcess.js b/entity/KeywordCategory_entity/entityfields/orderedbysortingfieldkeywordsconsumer/children/containername_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..a7b35e011264275c0614ce65e3c70b2ac848746d --- /dev/null +++ b/entity/KeywordCategory_entity/entityfields/orderedbysortingfieldkeywordsconsumer/children/containername_param/valueProcess.js @@ -0,0 +1,7 @@ +import("system.util"); +import("system.result"); +import("system.vars"); + +//use the given keyword category name or use a dummy value, so that we do not get all Keyword entires from the KeywordEntry_entity (empty means "all" there) +var res = vars.get("$field.NAME") || util.getNewUUID(); +result.string(res); diff --git a/entity/KeywordCategory_entity/entityfields/orderedbysortingfieldkeywordsconsumer/stateProcess.js b/entity/KeywordCategory_entity/entityfields/orderedbysortingfieldkeywordsconsumer/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..312127b36af1bee37c5431a0c4f191e8cfc07941 --- /dev/null +++ b/entity/KeywordCategory_entity/entityfields/orderedbysortingfieldkeywordsconsumer/stateProcess.js @@ -0,0 +1,12 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); +import("system.entities"); + +var config = entities.createConfigForLoadingConsumerRows().consumer("OrderedBySortingFieldKeywordsConsumer") +var count = entities.getRowCount(config); + +if (vars.get("$field.SORTINGBY") === "0" && count > 0) + result.string(neon.COMPONENTSTATE_EDITABLE); +else + result.string(neon.COMPONENTSTATE_INVISIBLE); \ No newline at end of file diff --git a/entity/KeywordCategory_entity/entityfields/sortingby/dropDownProcess.js b/entity/KeywordCategory_entity/entityfields/sortingby/dropDownProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..7857949a704707c91123e2f9d922b23fcfc1bef0 --- /dev/null +++ b/entity/KeywordCategory_entity/entityfields/sortingby/dropDownProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.translate"); + + +result.object([ + ["0", translate.text("by sorting")], + ["1", translate.text("by name")], + ["2", translate.text("by translated name")], +]); \ No newline at end of file diff --git a/entity/KeywordCategory_entity/entityfields/sortingby/valueProcess.js b/entity/KeywordCategory_entity/entityfields/sortingby/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2866c93908dc4786a1380517df31dcd16a388473 --- /dev/null +++ b/entity/KeywordCategory_entity/entityfields/sortingby/valueProcess.js @@ -0,0 +1,9 @@ +import("system.neon"); +import("system.result"); +import("system.vars"); + + +if(vars.get("$this.value") == null && vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +{ + result.string("0"); +} \ No newline at end of file diff --git a/entity/KeywordCategory_entity/entityfields/sortingdirection/dropDownProcess.js b/entity/KeywordCategory_entity/entityfields/sortingdirection/dropDownProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..4a9d0a80be8899b9e8b0554edf180b33bc5e680a --- /dev/null +++ b/entity/KeywordCategory_entity/entityfields/sortingdirection/dropDownProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("system.translate"); + + +result.object([ + ["ASC", translate.text("ascending")], + ["DESC", translate.text("descending")] +]); \ No newline at end of file diff --git a/entity/KeywordCategory_entity/entityfields/sortingdirection/valueProcess.js b/entity/KeywordCategory_entity/entityfields/sortingdirection/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..e7bc0262d0999dac43bcb9854cc2c84d5107cf8d --- /dev/null +++ b/entity/KeywordCategory_entity/entityfields/sortingdirection/valueProcess.js @@ -0,0 +1,9 @@ +import("system.neon"); +import("system.result"); +import("system.vars"); + + +if(vars.get("$this.value") == null && vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +{ + result.string("ASC"); +} \ No newline at end of file diff --git a/entity/KeywordCategory_entity/recordcontainers/db/cacheKeyProcess.js b/entity/KeywordCategory_entity/recordcontainers/db/cacheKeyProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..db72c61ec71e7181a23fc5ea9cbd95afff15d6dd --- /dev/null +++ b/entity/KeywordCategory_entity/recordcontainers/db/cacheKeyProcess.js @@ -0,0 +1,5 @@ +import("CachedRecordContainer_lib"); +import("system.result") + +var res = CachedRecordContainerUtils.getKeyWithPreset(CachedRecordContainerFieldPresets.STANDARD()); +result.string(res); diff --git a/entity/KeywordCategory_entity/recordcontainers/db/onDBDelete.js b/entity/KeywordCategory_entity/recordcontainers/db/onDBDelete.js new file mode 100644 index 0000000000000000000000000000000000000000..9fb896f27e82dbcc7f7afcadf277a6a2383d6f24 --- /dev/null +++ b/entity/KeywordCategory_entity/recordcontainers/db/onDBDelete.js @@ -0,0 +1,15 @@ +import("system.vars"); +import("system.entities"); +import("Sql_lib"); + +var categoryId = vars.get("$local.uid"); + +newWhere("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ATTRIBUTE_ID", newSelect("AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_ATTRIBUTEID") + .from("AB_KEYWORD_ATTRIBUTE") + .where("AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_CATEGORY_ID", categoryId) + , SqlBuilder.IN()).deleteData(); +newWhere("AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_CATEGORY_ID", categoryId).deleteData(); +newWhere("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", categoryId).deleteData(); + +//dependecies are removed so the cache needs to be updated +entities.invalidateCache("KeywordEntry_entity", "db"); \ No newline at end of file diff --git a/entity/KeywordCategory_entity/recordcontainers/db/onDBInsert.js b/entity/KeywordCategory_entity/recordcontainers/db/onDBInsert.js new file mode 100644 index 0000000000000000000000000000000000000000..74e995d10911196cc51444fc37b5b25089494d12 --- /dev/null +++ b/entity/KeywordCategory_entity/recordcontainers/db/onDBInsert.js @@ -0,0 +1,4 @@ +import("system.entities"); + +//dependecies are updated so the cache needs to be updated +entities.invalidateCache("KeywordEntry_entity", "db"); \ No newline at end of file diff --git a/entity/KeywordCategory_entity/recordcontainers/db/onDBUpdate.js b/entity/KeywordCategory_entity/recordcontainers/db/onDBUpdate.js new file mode 100644 index 0000000000000000000000000000000000000000..74e995d10911196cc51444fc37b5b25089494d12 --- /dev/null +++ b/entity/KeywordCategory_entity/recordcontainers/db/onDBUpdate.js @@ -0,0 +1,4 @@ +import("system.entities"); + +//dependecies are updated so the cache needs to be updated +entities.invalidateCache("KeywordEntry_entity", "db"); \ No newline at end of file diff --git a/entity/KeywordCategory_entity/recordcontainers/db/orderClauseProcess.js b/entity/KeywordCategory_entity/recordcontainers/db/orderClauseProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..12bc0d4f8b6254ac74e04bb5c6a94cd74d7f7c3c --- /dev/null +++ b/entity/KeywordCategory_entity/recordcontainers/db/orderClauseProcess.js @@ -0,0 +1,6 @@ +import("system.db"); +import("system.result"); + +result.object({ + "AB_KEYWORD_CATEGORY.NAME": db.ASCENDING +}); \ No newline at end of file diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index a8b7677171008fce6e406d240eb7eb031b39d879..a3f4b138c30aac40ab0ca8678cd870d16a4fae1f 100644 --- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod +++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18"> <name>KeywordEntry_entity</name> - <title>Keyword</title> + <title>Keyword Entry</title> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/KeywordEntry_entity/documentation.adoc</documentation> <siblings /> @@ -11,7 +11,7 @@ <onValidation>%aditoprj%/entity/KeywordEntry_entity/onValidation.js</onValidation> <iconId>VAADIN:KEY</iconId> <iconIdProcess>%aditoprj%/entity/KeywordEntry_entity/iconIdProcess.js</iconIdProcess> - <titlePlural>Keywords</titlePlural> + <titlePlural>Keyword Entries</titlePlural> <recordContainer>db</recordContainer> <entityFields> <entityProvider> @@ -43,12 +43,8 @@ <name>CONTAINER</name> <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/container/documentation.adoc</documentation> <title>Container</title> - <groupable v="true" /> - <mandatory v="true" /> - <dropDownProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/container/dropDownProcess.js</dropDownProcess> - <textInputAllowed v="true" /> <state>READONLY</state> - <stateProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/container/stateProcess.js</stateProcess> + <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/container/valueProcess.js</valueProcess> </entityField> <entityField> <name>AB_KEYWORD_ENTRYID</name> @@ -69,6 +65,11 @@ <name>TITLE</name> <title>Title (original language)</title> <mandatory v="true" /> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS</element> + <element>PROCESS_SETVALUE</element> + </onValueChangeTypes> </entityField> <entityField> <name>SORTING</name> @@ -102,7 +103,7 @@ <name>SpecificContainerKeywords</name> <lookupIdfield>KEYID</lookupIdfield> <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/documentation.adoc</documentation> - <recordContainer>db</recordContainer> + <recordContainer>jDito</recordContainer> <dependencies> <entityDependency> <name>bb48a3ee-f340-4fd4-8c80-ef73b765ab58</name> @@ -654,7 +655,7 @@ <entityField> <name>TITLE_TRANSLATED</name> <state>INVISIBLE</state> - <displayValueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/title_translated/displayValueProcess.js</displayValueProcess> + <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/title_translated/valueProcess.js</valueProcess> </entityField> <entityParameter> <name>OnlyActives_param</name> @@ -708,6 +709,73 @@ <name>BlacklistIds_param</name> <expose v="true" /> </entityParameter> + <entityField> + <name>AB_KEYWORD_CATEGORY_ID</name> + <title>Keyword Category</title> + <consumer>KeywordCategoryConsumer</consumer> + <groupable v="true" /> + <mandatory v="true" /> + <state>READONLY</state> + <stateProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/ab_keyword_category_id/stateProcess.js</stateProcess> + <displayValueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/ab_keyword_category_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityConsumer> + <name>KeywordCategoryConsumer</name> + <dependency> + <name>dependency</name> + <entityName>KeywordCategory_entity</entityName> + <fieldName>AllKeywordCategoryProvider</fieldName> + </dependency> + </entityConsumer> + <entityField> + <name>UID</name> + <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/uid/documentation.adoc</documentation> + <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/uid/valueProcess.js</valueProcess> + </entityField> + <entityProvider> + <name>OrderedBySortingFieldKeywords</name> + <lookupIdfield>AB_KEYWORD_ENTRYID</lookupIdfield> + <sortingField>SORTING</sortingField> + <recordContainer>db</recordContainer> + <dependencies> + <entityDependency> + <name>f677c429-246a-4550-afc7-73dac953bfbf</name> + <entityName>KeywordCategory_entity</entityName> + <fieldName>OrderedBySortingFieldKeywordsConsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + <children> + <entityParameter> + <name>ContainerName_param</name> + <expose v="true" /> + </entityParameter> + </children> + </entityProvider> + <entityProvider> + <name>OrderedByNameFieldKeywords</name> + <lookupIdfield>AB_KEYWORD_ENTRYID</lookupIdfield> + <recordContainer>jDito</recordContainer> + <dependencies> + <entityDependency> + <name>63218865-e3ef-4fb6-9f0a-3fef321ce30c</name> + <entityName>KeywordCategory_entity</entityName> + <fieldName>OrderedByNameFieldKeywordsConsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + <children> + <entityParameter> + <name>ContainerName_param</name> + <expose v="true" /> + </entityParameter> + </children> + </entityProvider> + <entityField> + <name>KEYID_alwaysReadOnly</name> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/keyid_alwaysreadonly/valueProcess.js</valueProcess> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -717,7 +785,7 @@ <orderClauseProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> <onDBDelete>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <alias>Data_alias</alias> - <cacheType>GLOBAL</cacheType> + <cacheType>SESSION</cacheType> <cacheKeyProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/cacheKeyProcess.js</cacheKeyProcess> <recordFieldMappings> <dbRecordFieldMapping> @@ -752,15 +820,17 @@ </dbRecordFieldMapping> <dbRecordFieldMapping> <name>CONTAINER.value</name> - <recordfield>AB_KEYWORD_ENTRY.CONTAINER</recordfield> + <expression>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/recordfieldmappings/container.value/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>AB_KEYWORD_CATEGORY_ID.value</name> + <recordfield>AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID</recordfield> <isFilterable v="true" /> - <isLookupFilter v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> - <name>TITLE_TRANSLATED.value</name> - <recordfield>AB_KEYWORD_ENTRY.TITLE</recordfield> - <isFilterable v="false" /> - <isLookupFilter v="true" /> + <name>AB_KEYWORD_CATEGORY_ID.displayValue</name> + <expression>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/recordfieldmappings/ab_keyword_category_id.displayvalue/expression.js</expression> + <columnAlias>CATEGORY_NAME</columnAlias> </dbRecordFieldMapping> </recordFieldMappings> <linkInformation> @@ -773,5 +843,24 @@ </linkInformation> </linkInformation> </dbRecordContainer> + <jDitoRecordContainer> + <name>jDito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <isSortable v="true" /> + <contentProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <cacheType>SESSION</cacheType> + <cacheKeyProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/jdito/cacheKeyProcess.js</cacheKeyProcess> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>KEYID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>TITLE.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> </recordContainers> </entity> diff --git a/entity/KeywordEntry_entity/contentTitleProcess.js b/entity/KeywordEntry_entity/contentTitleProcess.js index ff69ed4c6247006fb67bd75e3a8523df44274575..94d31040e5e27920293d2b9ec667d2feec61ff9e 100644 --- a/entity/KeywordEntry_entity/contentTitleProcess.js +++ b/entity/KeywordEntry_entity/contentTitleProcess.js @@ -2,4 +2,4 @@ import("system.translate"); import("system.vars"); import("system.result"); -result.string(translate.text(vars.get("$field.TITLE_TRANSLATED"))); \ No newline at end of file +result.string(vars.get("$field.TITLE_TRANSLATED")); diff --git a/entity/KeywordEntry_entity/documentation.adoc b/entity/KeywordEntry_entity/documentation.adoc index 17d50062e384d21fb406ad1bb5e200e17f70a37e..4ab5cadb129deccd73f0ff12d75fc0dc916c904a 100644 --- a/entity/KeywordEntry_entity/documentation.adoc +++ b/entity/KeywordEntry_entity/documentation.adoc @@ -12,14 +12,18 @@ Glossary [glossary] +Keyword Category (former Keyword container):: + A Keyword Category is the element that keeps several entries of Keyword entirestogether. That could be for example something like "Contact-Status". + Keyword Container:: - A keyword container is the element that keeps several entries of Keywords together. That could be for example something like "Contact-Status". Keep in mind that this done virtually and not in the actual way of storage. + This was once the group of a keyword entry list (like "Contact-Status"). Since this now done via the Keyword Category, the keyword container describes ++ the name of the Keyword Category Keyword Entry:: - A keyword entry is a specific child-element of a keyword container. For the upper example "Contact-Status" this could be "Active", "Inactive", etc. + A keyword entry is a specific child-element of a keyword category. For the upper example "Contact-Status" this could be "Active", "Inactive", etc. Keyword:: - Keyword describes the whole set of elements like keyword container and keyword entry. It's more like a virtual bracket for the whole construct. + Keyword describes the whole set of elements like keyword category and keyword entry. It's more like a virtual bracket for the whole construct. == Types of Keywords == @@ -38,13 +42,13 @@ digraph g { graph [ dpi = 100 ] node [ shape = box color="#dddddd" fontcolor="#dddddd" fontname = "Consolas"]; edge [ color="#dddddd" ] - { rank=max; kwdContainer [label="Keyword Container"] } + { rank=max; kwdCategory [label="Keyword Category"] } { rank=same; kwdEntry [label="Keyword Entry"] } { rank=next; entry1 [label="Entry 1" shape=ellipse] } { rank=same entry1; entryN [label="Entry N" shape=ellipse] } - kwdEntry -> kwdContainer; - kwdEntry -> kwdContainer; + kwdEntry -> kwdCategory; + kwdEntry -> kwdCategory; entry1 -> kwdEntry entryN -> kwdEntry } @@ -52,32 +56,58 @@ digraph g { Take a look at the following table. Beware that these are not the actual db-column-names but the information what's represented. +simplified, abstract representation how keywords are actually stored: -.simplified, abstract representation how keywords are actually stored +.Keyword Entry [options="header", cols="m,m,d,d"] |======= -|UID |key-ID |tile | container +|{set:cellbgcolor:!} + UID |key-ID |tile | Category-reference +|{set:cellbgcolor:#90b678} + unique key 1|1-key-value A|one|category_id1 +|unique key 2|2-key-value A|two|category_id1 +|unique key 3|3-key-value A|three|category_id1 +|{set:cellbgcolor:#b69e78 } + unique key 4|1-key-value B|I|category_id2 +|unique key 5|2-key-value B|II|category_id2 +|======= + +.Keyword Category +[options="header"] +|======= +|{set:cellbgcolor:!} + UID |Name | Sorting type |Sorting direction |{set:cellbgcolor:#90b678} - unique key 1|1-key-value A|one|container 1 -|unique key 2|2-key-value A|two|container 1 -|unique key 3|3-key-value A|three|container 1 + category_id1|Name 1| sort-type 1| sort-direction 1 |{set:cellbgcolor:#b69e78 } - unique key 4|1-key-value B|I|container 2 -|unique key 5|2-key-value B|II|container 2 + category_id2|Name 2| sort-type 2| sort-direction 2 |======= And, to clarify an example: +Simplified, example representation how keywords are acutllay stored: -.simplified, example representation how keywords are acutllay stored +.Keyword Entry [options="header", cols="m,m,d,d"] |======= |{set:cellbgcolor:! } - UID |key-ID |tile | container -|{set:cellbgcolor:#90b678}db1792cd|de-DE|German (Germany)|Language -|62df7f0ba|en-GB|English (United Kingdom)|Language -|126229d9|fr-FR|French (France)|Language -|{set:cellbgcolor:#b69e78 }3508929f|ab7b1885|active|ContactStatus -|52ce5785|2b2091eb|inactive|ContactStatus + UID |key-ID |tile | Category-reference +|{set:cellbgcolor:#90b678}db1792cd|de-DE|German (Germany)|3fd65 +|62df7f0ba|en-GB|English (United Kingdom)|3fd65 +|126229d9|fr-FR|French (France)|3fd65 +|{set:cellbgcolor:#b69e78 }3508929f|ab7b1885|active|85c1e +|52ce5785|2b2091eb|inactive|85c1e +|======= + + +.Keyword Category +[options="header"] +|======= +|{set:cellbgcolor:!} + UID |Name | Sorting type |Sorting direction +|{set:cellbgcolor:#90b678} + 3fd65|Language| Alphanumeric| ascending +|{set:cellbgcolor:#b69e78 } + 85c1e|Status| Manual | ascending |======= === Extended Key-Value lists with special Attributes === @@ -86,7 +116,7 @@ Basically this is an extension of the <<Simple Key-Value lists>>. Sometimes it's necessary to have some more properties within a keyword-entry. Example: -You've got a Keyword-container for Types of Communication with basically the following values: +You've got a Keyword-Category for Types of Communication with basically the following values: - mobile phone - landline phone diff --git a/entity/KeywordEntry_entity/entityfields/ab_keyword_category_id/displayValueProcess.js b/entity/KeywordEntry_entity/entityfields/ab_keyword_category_id/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..89b5e069dfebf45a710ac11a070f173c70d02bc2 --- /dev/null +++ b/entity/KeywordEntry_entity/entityfields/ab_keyword_category_id/displayValueProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("system.vars"); +import("Keyword_lib"); + + +var containerName = KeywordUtils.getCategoryNameById(vars.get("$field.AB_KEYWORD_CATEGORY_ID")); + +result.string(containerName); diff --git a/entity/KeywordEntry_entity/entityfields/container/stateProcess.js b/entity/KeywordEntry_entity/entityfields/ab_keyword_category_id/stateProcess.js similarity index 87% rename from entity/KeywordEntry_entity/entityfields/container/stateProcess.js rename to entity/KeywordEntry_entity/entityfields/ab_keyword_category_id/stateProcess.js index 82fc64847e6ac4e59a674fac7873eef6161aa741..65d7d8bc2a9e945613f1ceca3f51fe6c7b40c92f 100644 --- a/entity/KeywordEntry_entity/entityfields/container/stateProcess.js +++ b/entity/KeywordEntry_entity/entityfields/ab_keyword_category_id/stateProcess.js @@ -2,7 +2,7 @@ import("system.result"); import("system.neon"); import("system.vars"); -/*allowing the CONTAINER to change later would result in a lot of problems like +/*allowing the category to change later would result in a lot of problems like * - what happens to SORTING-value? * - what happens with already created keyword-attributerelations? * - what happens when a key is specified twice after the change? diff --git a/entity/KeywordEntry_entity/entityfields/container/documentation.adoc b/entity/KeywordEntry_entity/entityfields/container/documentation.adoc index e1cfb215ac798637843c387c914479f4428e301a..093cc57aa4359c533113f364f618a955d9ffa58f 100644 --- a/entity/KeywordEntry_entity/entityfields/container/documentation.adoc +++ b/entity/KeywordEntry_entity/entityfields/container/documentation.adoc @@ -1,2 +1,2 @@ - `CONTAINER` is the a name and used for grouping keyword-entries. This is was a keyword-container essentially is. -After creation of an entry it cannot be changed anymore. \ No newline at end of file + `CONTAINER` was used for grouping keyword-entries. +This is now represented by an entry in the `AB_KEYWORD_CATEGORY`-table. \ No newline at end of file diff --git a/entity/KeywordEntry_entity/entityfields/container/dropDownProcess.js b/entity/KeywordEntry_entity/entityfields/container/dropDownProcess.js deleted file mode 100644 index 97ebc5fbaf0bdada4d7571bc882fcdc9fa2d99a5..0000000000000000000000000000000000000000 --- a/entity/KeywordEntry_entity/entityfields/container/dropDownProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.result"); -import("Keyword_lib"); - -var res = KeywordUtils.getContainerNames().map(function(e){ - return [e, e];//currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers -}); -result.object(res); \ No newline at end of file diff --git a/entity/KeywordEntry_entity/entityfields/container/valueProcess.js b/entity/KeywordEntry_entity/entityfields/container/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..02b3bd7700586175fd4e2540208f8ee4a16d42d8 --- /dev/null +++ b/entity/KeywordEntry_entity/entityfields/container/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.AB_KEYWORD_CATEGORY_ID.displayValue")); \ No newline at end of file diff --git a/entity/KeywordEntry_entity/entityfields/keyid/onValidation.js b/entity/KeywordEntry_entity/entityfields/keyid/onValidation.js index 07610f8551a05ff2f5694f37ed37a9da6618bc1a..cd4940f19fdd92c8ddaa01c4fe6fca7d2e41c773 100644 --- a/entity/KeywordEntry_entity/entityfields/keyid/onValidation.js +++ b/entity/KeywordEntry_entity/entityfields/keyid/onValidation.js @@ -5,18 +5,18 @@ import("system.vars"); import("Sql_lib"); import("Entity_lib"); -var container = vars.get("$field.CONTAINER"); +var categoryId = vars.get("$field.AB_KEYWORD_CATEGORY_ID"); var keyId = vars.get("local.value").trim(); -//a KEY has always to be unique within one container and since the user can specify the key on insert we've to ensure that it's unique -if (container && keyId) +//a KEY has always to be unique within one categoryId and since the user can specify the key on insert we've to ensure that it's unique +if (categoryId && keyId) { var selfEntryId = vars.get("$field.AB_KEYWORD_ENTRYID"); var sqlMasks = new SqlMaskingUtils(); var alreadyExistantEntryId = newSelect("AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID") .from("AB_KEYWORD_ENTRY") .where(sqlMasks.trim("AB_KEYWORD_ENTRY.KEYID"), keyId, null, SqlUtils.getSingleColumnType("AB_KEYWORD_ENTRY", "KEYID")) - .and("AB_KEYWORD_ENTRY.CONTAINER", container) + .and("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", categoryId) .and("AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID", selfEntryId, SqlBuilder.NOT_EQUAL()) .cell(); diff --git a/entity/KeywordEntry_entity/entityfields/keyid_alwaysreadonly/valueProcess.js b/entity/KeywordEntry_entity/entityfields/keyid_alwaysreadonly/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..a560a5517f1396643dc77b3790d9288def70d4b4 --- /dev/null +++ b/entity/KeywordEntry_entity/entityfields/keyid_alwaysreadonly/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.KEYID")); \ No newline at end of file diff --git a/entity/KeywordEntry_entity/entityfields/title_translated/displayValueProcess.js b/entity/KeywordEntry_entity/entityfields/title_translated/valueProcess.js similarity index 50% rename from entity/KeywordEntry_entity/entityfields/title_translated/displayValueProcess.js rename to entity/KeywordEntry_entity/entityfields/title_translated/valueProcess.js index fd4ebefae48c5d8c702efce11cf8f778e88ea7d0..832a03f3d2e3015c9d9c4eb1e3ae79644fe2a4b0 100644 --- a/entity/KeywordEntry_entity/entityfields/title_translated/displayValueProcess.js +++ b/entity/KeywordEntry_entity/entityfields/title_translated/valueProcess.js @@ -2,5 +2,5 @@ import("system.result"); import("system.translate"); import("system.vars"); -var title = vars.get("$this.value"); -result.string(translate.text(title)); \ No newline at end of file +var title = vars.get("$field.TITLE"); +result.string(translate.text(title)); diff --git a/entity/KeywordEntry_entity/entityfields/uid/documentation.adoc b/entity/KeywordEntry_entity/entityfields/uid/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..8fcda674e10b1f60ff8430aa2ba83bb0b2ad1edd --- /dev/null +++ b/entity/KeywordEntry_entity/entityfields/uid/documentation.adoc @@ -0,0 +1,2 @@ +Dummy UID field to make jDito RecordContainer work. +It simply returns the value of AB_KEYWORD_ENTRYID, which is the actual UID. \ No newline at end of file diff --git a/entity/KeywordEntry_entity/entityfields/uid/valueProcess.js b/entity/KeywordEntry_entity/entityfields/uid/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..5951f8d6e5f9ea1c8f173a8b2dde7f489aa73ca8 --- /dev/null +++ b/entity/KeywordEntry_entity/entityfields/uid/valueProcess.js @@ -0,0 +1,5 @@ +import("system.result") +import("system.vars") + + +result.string(vars.get("$field.AB_KEYWORD_ENTRYID")); diff --git a/entity/KeywordEntry_entity/iconIdProcess.js b/entity/KeywordEntry_entity/iconIdProcess.js index ef0457e780554daacf633e3381aff300f84e713c..4a0b4e8f7c8aacc31d3792851043560747d6b5d3 100644 --- a/entity/KeywordEntry_entity/iconIdProcess.js +++ b/entity/KeywordEntry_entity/iconIdProcess.js @@ -1,7 +1,7 @@ import("system.vars"); import("system.result"); -var container = vars.get("$field.CONTAINER"); +var container = vars.get("$field.AB_KEYWORD_CATEGORY_ID.displayValue"); if (container) result.string("TEXT:" + container); \ No newline at end of file diff --git a/entity/KeywordEntry_entity/onValidation.js b/entity/KeywordEntry_entity/onValidation.js index 463a84f18f8bcf21fe9539ab5041c31be8a7a958..ea935c52e323f18fbee12ac39e2bbbcf0e27dc2b 100644 --- a/entity/KeywordEntry_entity/onValidation.js +++ b/entity/KeywordEntry_entity/onValidation.js @@ -8,13 +8,13 @@ import("Sql_lib"); //TODO: this should no happen in onValidation; waiting for #1032668 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) { - var keyContainer = vars.get("$field.CONTAINER"); - if (keyContainer) + var keywordCategory = vars.get("$field.AB_KEYWORD_CATEGORY_ID"); + if (keywordCategory) { var maskingHelper = new SqlMaskingUtils(); var newCodeNumber = newSelect(maskingHelper.max("AB_KEYWORD_ENTRY.SORTING")) .from("AB_KEYWORD_ENTRY") - .where("AB_KEYWORD_ENTRY.CONTAINER", keyContainer) + .where("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", keywordCategory) .cell(); newCodeNumber = Number(newCodeNumber);//if no number exists till no, start value will be 1 (due to: ++0) diff --git a/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js b/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js index 90f58744de34c09de3164a324889dc3d3bf03859..785569f4ecc5c34f05e67133fb369baaaddf1808 100644 --- a/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js +++ b/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js @@ -1,10 +1,23 @@ +import("Keyword_lib"); import("Util_lib"); import("system.vars"); import("system.db"); import("system.result"); +import("system.tools"); import("Sql_lib"); -var cond = newWhereIfSet("AB_KEYWORD_ENTRY.CONTAINER", "$param.ContainerName_param"); + +var cond = newWhere(); +var category = vars.get("$param.ContainerName_param"); +if (category) +{ + var categoryId = KeywordUtils.getCategoryIdByName(category); + if (categoryId) + cond.and("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", categoryId); + else + cond.and("1=2"); +} + if (vars.get("$param.OnlyActives_param") == "true") { diff --git a/entity/KeywordEntry_entity/recordcontainers/db/orderClauseProcess.js b/entity/KeywordEntry_entity/recordcontainers/db/orderClauseProcess.js index e32403dc6e2df5902c3faeaf8f155a3b41a0f405..5a02e2d12c957ecfed1e5041c45eee1b970820b7 100644 --- a/entity/KeywordEntry_entity/recordcontainers/db/orderClauseProcess.js +++ b/entity/KeywordEntry_entity/recordcontainers/db/orderClauseProcess.js @@ -2,7 +2,7 @@ import("system.db"); import("system.result"); result.object({ - "AB_KEYWORD_ENTRY.CONTAINER": db.ASCENDING + "CATEGORY_NAME": db.ASCENDING//CATEGORY_NAME is an alias for the subselect result ,"AB_KEYWORD_ENTRY.SORTING": db.ASCENDING ,"AB_KEYWORD_ENTRY.TITLE": db.ASCENDING }); \ No newline at end of file diff --git a/entity/KeywordEntry_entity/recordcontainers/db/recordfieldmappings/ab_keyword_category_id.displayvalue/expression.js b/entity/KeywordEntry_entity/recordcontainers/db/recordfieldmappings/ab_keyword_category_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..663dd8a028dcf043b0c40b203526fab207da2937 --- /dev/null +++ b/entity/KeywordEntry_entity/recordcontainers/db/recordfieldmappings/ab_keyword_category_id.displayvalue/expression.js @@ -0,0 +1,8 @@ +import("system.result"); +import("Sql_lib"); + +var res = newSelect("AB_KEYWORD_CATEGORY.NAME") + .from("AB_KEYWORD_CATEGORY") + .where("AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID = AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID") + .toString(); +result.string(res); \ No newline at end of file diff --git a/entity/KeywordEntry_entity/recordcontainers/db/recordfieldmappings/container.value/expression.js b/entity/KeywordEntry_entity/recordcontainers/db/recordfieldmappings/container.value/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..663dd8a028dcf043b0c40b203526fab207da2937 --- /dev/null +++ b/entity/KeywordEntry_entity/recordcontainers/db/recordfieldmappings/container.value/expression.js @@ -0,0 +1,8 @@ +import("system.result"); +import("Sql_lib"); + +var res = newSelect("AB_KEYWORD_CATEGORY.NAME") + .from("AB_KEYWORD_CATEGORY") + .where("AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID = AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID") + .toString(); +result.string(res); \ No newline at end of file diff --git a/entity/KeywordEntry_entity/recordcontainers/jdito/cacheKeyProcess.js b/entity/KeywordEntry_entity/recordcontainers/jdito/cacheKeyProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..6bfdf07831c98f031ec47f82bc343659207b02e4 --- /dev/null +++ b/entity/KeywordEntry_entity/recordcontainers/jdito/cacheKeyProcess.js @@ -0,0 +1,5 @@ +import("CachedRecordContainer_lib"); +import("system.result") + +var res = CachedRecordContainerUtils.getCommonKey("$param.ContainerName_param","$param.OnlyActives_param"); +result.string(res); diff --git a/entity/KeywordEntry_entity/recordcontainers/jdito/contentProcess.js b/entity/KeywordEntry_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..7fa2f2e399d563df82aef2d74d90aa34ac3b7eb6 --- /dev/null +++ b/entity/KeywordEntry_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,88 @@ +import("system.db"); +import("system.result"); +import("system.translate"); +import("system.util"); +import("system.vars"); +import("Sql_lib"); + + +var ENTRY_RESULT_INDEX_KEYID = 0; +var ENTRY_RESULT_INDEX_TITLE = 1; +var ENTRY_RESULT_INDEX_UID = 2; + +var CATEGORY_RESULT_INDEX_UID = 0; +var CATEGORY_RESULT_INDEX_NAME = 1; +var CATEGORY_RESULT_INDEX_SORTINGBY = 2; +var CATEGORY_RESULT_INDEX_SORTINGDIR = 3; + +var resultSet = []; +var keywordStatement = newSelect("AB_KEYWORD_ENTRY.KEYID, AB_KEYWORD_ENTRY.TITLE, AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID as UID") + .from("AB_KEYWORD_ENTRY") + .join("AB_KEYWORD_CATEGORY", "AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID = AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID") + .where(); + +if (vars.get("$param.OnlyActives_param") == "true") +{ + keywordStatement.and("AB_KEYWORD_ENTRY.ISACTIVE", "1"); +} + +if(vars.exists("$param.ContainerName_param")) +{ + var containerParam = vars.get("$param.ContainerName_param"); + + var category = newSelect("AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID, AB_KEYWORD_CATEGORY.NAME, AB_KEYWORD_CATEGORY.SORTINGBY, AB_KEYWORD_CATEGORY.SORTINGDIRECTION") + .from("AB_KEYWORD_CATEGORY") + .where("AB_KEYWORD_CATEGORY.NAME", containerParam) + .arrayRow(); + + var sortingDirection = category[CATEGORY_RESULT_INDEX_SORTINGDIR]; + var isSortingAsc = sortingDirection === "ASC"; + var sortingField = ""; + var isSortingByTranslatedTitle = false; + + switch(category[CATEGORY_RESULT_INDEX_SORTINGBY]) + { + case "1": + sortingField = "AB_KEYWORD_ENTRY.TITLE"; + break; + case "2": + sortingField = "AB_KEYWORD_ENTRY.TITLE"; + isSortingByTranslatedTitle = true; + break; + case "0": + default: + sortingField = "AB_KEYWORD_ENTRY.SORTING"; + break; + } + + + resultSet = keywordStatement + .and("AB_KEYWORD_CATEGORY.NAME", containerParam) + .orderBy(sortingField + " " + sortingDirection) + .table() + ; + + // If sorting is set to translated title (="2"), it must be done separately after DB query because translation can't be done in a query + if(isSortingByTranslatedTitle) + { + resultSet.sort(function(pFirst, pSecond) { + var titleA = translate.text(pFirst[CATEGORY_RESULT_INDEX_NAME]).toUpperCase(); + var titleB = translate.text(pSecond[CATEGORY_RESULT_INDEX_NAME]).toUpperCase(); + + if (titleA < titleB) { + return isSortingAsc ? -1 : 1; + } + if (titleA > titleB) { + return isSortingAsc ? 1 : -1; + } + + return 0; // Titles are equal + }); + } +} +else +{ + resultSet = keywordStatement.orderBy("AB_KEYWORD_ENTRY.SORTING asc").table(); +} + +result.object(resultSet); diff --git a/entity/MemberRoles_entity/recordcontainers/db/conditionProcess.js b/entity/MemberRoles_entity/recordcontainers/db/conditionProcess.js index b0f946ee1d5c070f85e8fb962a46326ad613a162..2a0cb647a2c2a8bd86844a719cefc1518c20c579 100644 --- a/entity/MemberRoles_entity/recordcontainers/db/conditionProcess.js +++ b/entity/MemberRoles_entity/recordcontainers/db/conditionProcess.js @@ -5,7 +5,7 @@ import("KeywordRegistry_basic"); import("Sql_lib"); import("Keyword_lib"); -var cond = newWhere("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.MemberRole()); +var cond = newWhere("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", KeywordUtils.getCategoryIdByName($KeywordRegistry.MemberRole())); var usageFilter = vars.get("$param.UsageFilter_param"); diff --git a/entity/SalesprojectAnalyses_entity/recordcontainers/jdito/contentProcess.js b/entity/SalesprojectAnalyses_entity/recordcontainers/jdito/contentProcess.js index eee423852dcd66baeefb18745cc79f82ad09109e..7905f1295088e933708ad63f22994da836438987 100644 --- a/entity/SalesprojectAnalyses_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/SalesprojectAnalyses_entity/recordcontainers/jdito/contentProcess.js @@ -14,7 +14,7 @@ import("KeywordRegistry_basic"); var phases = newSelect("KEYID, AB_KEYWORD_ENTRY.TITLE, count(PHASE), AB_KEYWORD_ENTRY.SORTING") .from("SALESPROJECT") .join("AB_KEYWORD_ENTRY", newWhere("KEYID = PHASE") - .and("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.salesprojectPhase()) + .and("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", KeywordUtils.getCategoryIdByName($KeywordRegistry.salesprojectPhase())) .and("SORTING != 7")) .groupBy("KEYID, AB_KEYWORD_ENTRY.TITLE, AB_KEYWORD_ENTRY.SORTING") .orderBy("SORTING") diff --git a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js index 04f45cf2419293ad15650cc115ddfbd7666c959a..d4d779b0c5261b8ad759fec03c049e544903aac1 100644 --- a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js @@ -13,7 +13,7 @@ var phasenManager = new SalesprojectConversionRate(); var sql = new SqlBuilder() .from("AB_KEYWORD_ENTRY") -.where("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.salesprojectPhase()); +.where("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", KeywordUtils.getCategoryIdByName($KeywordRegistry.salesprojectPhase())); if (filter != null) { diff --git a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/rowCountProcess.js b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/rowCountProcess.js index e79e16daf4a1a7bb4b18412dc1d45b06cbf27e31..9d19863bd9c26153fd71bfb7d5b648dee630245b 100644 --- a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/rowCountProcess.js +++ b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/rowCountProcess.js @@ -13,7 +13,7 @@ var phasenManager = new SalesprojectConversionRate(); var sql = new SqlBuilder() .from("AB_KEYWORD_ENTRY") -.where("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.salesprojectPhase()); +.where("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", KeywordUtils.getCategoryIdByName($KeywordRegistry.salesprojectPhase())); if (filter != null) { diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/phase_filterextention/groupQueryProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/phase_filterextention/groupQueryProcess.js index 308e821efaad27ef7cc947f8fcd0710229304998..eb4293c44f98b55df38ff494a122f8cef7077ab5 100644 --- a/entity/Salesproject_entity/recordcontainers/db/filterextensions/phase_filterextention/groupQueryProcess.js +++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/phase_filterextention/groupQueryProcess.js @@ -9,7 +9,7 @@ var order = vars.get("$local.order"); var sqlHelper = new SqlMaskingUtils(); var groupedList = "SALESPROJECT.PHASE" var condition = vars.get("$local.condition"); -var stmt = new SqlBuilder().from("SALESPROJECT").join("AB_KEYWORD_ENTRY", newWhere("AB_KEYWORD_ENTRY.KEYID = SALESPROJECT.PHASE").and("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.salesprojectPhase())).groupBy(groupedList + ", AB_KEYWORD_ENTRY.SORTING, AB_KEYWORD_ENTRY.KEYID"); +var stmt = new SqlBuilder().from("SALESPROJECT").join("AB_KEYWORD_ENTRY", newWhere("AB_KEYWORD_ENTRY.KEYID = SALESPROJECT.PHASE").and("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", KeywordUtils.getCategoryIdByName($KeywordRegistry.salesprojectPhase()))).groupBy(groupedList + ", AB_KEYWORD_ENTRY.SORTING, AB_KEYWORD_ENTRY.KEYID"); if (condition != " ") stmt.where(condition); diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index b5e52fa54837419a4320c0ccaef32928f43a732f..65b64ac634bd22387ec49b23077b3911fd8203c8 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -8007,6 +8007,21 @@ <entry> <key>2 Weeks</key> </entry> + <entry> + <key>The given Keyword Category Name is already used but needs to be unique</key> + </entry> + <entry> + <key>Keyword Entries</key> + </entry> + <entry> + <key>Keyword Category</key> + </entry> + <entry> + <key>Keyword Categories</key> + </entry> + <entry> + <key>Keyword Entry</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index a229b9cd707af5757ec5ab2be0668ce6df20c6c4..e5628884de40cac30c44423bd623eefc50c25547 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -58,6 +58,10 @@ <key>Restore Team</key> <value>Team wiederherstellen</value> </entry> + <entry> + <key>The given Keyword Category Name is already used but needs to be unique</key> + <value>Der angegebene Schlüsselwort Kategoriename existiert bereits, muss aber eindeutig sein</value> + </entry> <entry> <key>Choose Team</key> <value>Team auswählen</value> @@ -8220,7 +8224,6 @@ Bitte Datumseingabe prüfen</value> </entry> <entry> <key>Automatically</key> - <value>Automatisch</value> </entry> <entry> <key>Templatename</key> @@ -10542,6 +10545,22 @@ Bitte Datumseingabe prüfen</value> <key>2 Weeks</key> <value>2 Wochen</value> </entry> + <entry> + <key>Keyword Entries</key> + <value>Schlüsselwort-Einträge</value> + </entry> + <entry> + <key>Keyword Categories</key> + <value>Schlüsselwort-Kategorien</value> + </entry> + <entry> + <key>Keyword Category</key> + <value>Schlüsselwort-Kategorie</value> + </entry> + <entry> + <key>Keyword Entry</key> + <value>Schlüsselwort-Eintrag</value> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 0442fd0f3b7049d6ed3d8356abcebf21b86ba305..dab57db3f09e7324cd4ee030445c647d01129166 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -8088,6 +8088,21 @@ <entry> <key>2 Weeks</key> </entry> + <entry> + <key>The given Keyword Category Name is already used but needs to be unique</key> + </entry> + <entry> + <key>Keyword Entries</key> + </entry> + <entry> + <key>Keyword Category</key> + </entry> + <entry> + <key>Keyword Categories</key> + </entry> + <entry> + <key>Keyword Entry</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonContext/KeywordCategory/KeywordCategory.aod b/neonContext/KeywordCategory/KeywordCategory.aod new file mode 100644 index 0000000000000000000000000000000000000000..339af18455583a17b912f5df191b0904950d33a8 --- /dev/null +++ b/neonContext/KeywordCategory/KeywordCategory.aod @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>KeywordCategory</name> + <title>Keyword Category</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterView>KeywordCategoryFilter_view</filterView> + <editView>KeywordCategoryEdit_view</editView> + <previewView>KeywordCategoryPreview_view</previewView> + <entity>KeywordCategory_entity</entity> + <references> + <neonViewReference> + <name>1e20d23b-c7d2-4218-ab81-2e4358eae7bc</name> + <view>KeywordCategoryFilter_view</view> + </neonViewReference> + <neonViewReference> + <name>1daa1f4f-f6d3-4ce7-b83b-2b3617bc2136</name> + <view>KeywordCategoryEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>bc8a8d1d-d5fe-4518-a487-a2530820c78d</name> + <view>KeywordCategoryPreview_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/KeywordEntry/KeywordEntry.aod b/neonContext/KeywordEntry/KeywordEntry.aod index db9d9aa2b1577a069150e06299fd59bb6570372b..605540f62d6ca5743e6c0c4c3892217df14ba252 100644 --- a/neonContext/KeywordEntry/KeywordEntry.aod +++ b/neonContext/KeywordEntry/KeywordEntry.aod @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> <name>KeywordEntry</name> - <title>Keyword</title> + <title>Keyword Entry</title> <description><null value></description> <majorModelMode>DISTRIBUTED</majorModelMode> <filterView>KeywordEntryFilter_view</filterView> @@ -21,5 +21,13 @@ <name>9bb352b9-5a8c-41ac-9c42-7f4f7f4827f3</name> <view>KeywordEntryPreview_view</view> </neonViewReference> + <neonViewReference> + <name>e2b889cf-1159-429b-978e-c005d0306156</name> + <view>KeywordEntryMultiEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>71a850a4-1ec3-4a3f-abc0-f0b6eba2e514</name> + <view>KeywordEntryList_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonContext/SupportTicket/documentation.adoc b/neonContext/SupportTicket/documentation.adoc index 3bca58b3124500f53d71883fa7f55ac45ad364ce..f36128eeced596a320c3a68caa4bee3a01cd356d 100644 --- a/neonContext/SupportTicket/documentation.adoc +++ b/neonContext/SupportTicket/documentation.adoc @@ -62,19 +62,6 @@ As soon as you need to hardcode the ticket type keyid (e.g. use $KeywordRegistry ==== setup . add a new TicketType Keyword in liquibase (in your own liquibase folder, not the *basic* folder!) -[source,xml] ----- -<insert tableName="AB_KEYWORD_ENTRY"> - <column name="AB_KEYWORD_ENTRYID" value="54fd061b-3897-49c7-a1fb-92a35b87c846"/> - <column name="KEYID" value="TESTTICKET"/> - <column name="TITLE" value="Testticket"/> - <column name="CONTAINER" value="TicketType"/> - <column name="SORTING" valueNumeric="1"/> - <column name="ISACTIVE" valueNumeric="1"/> - <column name="ISESSENTIAL" valueNumeric="1"/> -</insert> ----- - . remove the preset of the *TicketType_param*: `SupportTicket_entity -> parameters -> TicketType_param -> valueProcess` comment or remove the process. This will enable the TicketType dropdown in the edit view. . optionally: change the title and titlePlural of the SupportTicket entity to something more generic (such as "Ticket") . deploy @@ -143,28 +130,7 @@ To alter the possible status just add the *availableStatus* keyword attribute: It is also just a json array which contains the Keyid's from the Keyword-Container *TaskStatus*. -If you need different / additional status which is not available in *TaskStatus*, just add it to *TaskStatus*: - -[source,xml] ----- -<insert tableName="AB_KEYWORD_ENTRY"> - <column name="AB_KEYWORD_ENTRYID" value="dbbe484b-be80-4be5-a804-e4aa877f25a2"/> - <column name="KEYID" value="SUPERSTATUS"/> - <column name="TITLE" value="superstatus"/> - <column name="CONTAINER" value="TaskStatus"/> - <column name="SORTING" valueNumeric="110"/> - <column name="ISACTIVE" valueNumeric="1"/> - <column name="ISESSENTIAL" valueNumeric="0"/> -</insert> - -<!-- the Icon used by this new status --> -<insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> - <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="03581cd1-1372-43b0-b10e-2bae51a4df30"/> - <column name="AB_KEYWORD_ENTRY_ID" value="dbbe484b-be80-4be5-a804-e4aa877f25a2"/> - <column name="AB_KEYWORD_ATTRIBUTE_ID" value="472f9bc2-3331-49f9-aba2-72d5eeb89654"/> - <column name="CHAR_VALUE" value="NEON:STATUS_NOT_ASSIGNED"/> -</insert> ----- +If you need different / additional status which is not available in *TaskStatus*, just add it to *TaskStatus* Then you can add it to the *availableStatus* array described above @@ -185,17 +151,7 @@ If you just would like to extend the SupportTicket (or another custom context) b Here an example to add a configuration for hiding the progress-field for certain types. -. first you have to define a new keyword attribute: -+ -[source,xml] ----- -<insert tableName="AB_KEYWORD_ATTRIBUTE"> - <column name="AB_KEYWORD_ATTRIBUTEID" value="c33ce01f-02f2-41ac-b2be-92e5fca67e31"/> - <column name="NAME" value="hideProgress"/> - <column name="CONTAINER" value="TicketType"/> - <column name="KIND" value="BOOL_VALUE"/> -</insert> ----- +. first you have to define a new keyword attribute. + . Then you need to assign *true* (1) to all types which you would like to hide the progress: + diff --git a/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod b/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod index 928c26ae36256a54d7541790081929d017a65e6d..04b2c96229f6ffff2f5d5a0c004ab7eeb2a4829e 100644 --- a/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod +++ b/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod @@ -16,8 +16,8 @@ <entityField>#ENTITY</entityField> <fields> <entityFieldLink> - <name>88fcd6c8-8dfc-4a1d-96d9-33412768feb9</name> - <entityField>CONTAINER</entityField> + <name>69049ecf-c6be-4b19-bb5c-1ba1f065446b</name> + <entityField>AB_KEYWORD_CATEGORY_ID</entityField> </entityFieldLink> <entityFieldLink> <name>4e120b1d-1016-41a1-abe7-9d28f8053380</name> diff --git a/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod b/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod index e9cac340595a2c181282ab3a39313a41c4b332f5..a212bffda8766c38a24dddf71cfbe8c5e06b1ac3 100644 --- a/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod +++ b/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod @@ -13,7 +13,7 @@ <name>Attributes</name> <hideContentSearch v="false" /> <titleField>NAME</titleField> - <subtitleField>CONTAINER</subtitleField> + <subtitleField>AB_KEYWORD_CATEGORY_ID</subtitleField> <descriptionField>TYPE</descriptionField> <autoNewRow v="true" /> <entityField>#ENTITY</entityField> @@ -23,8 +23,8 @@ <entityField>#ICON</entityField> </neonTableColumn> <neonTableColumn> - <name>7efe2ae9-8b76-439f-95cb-547f7dec9057</name> - <entityField>CONTAINER</entityField> + <name>0c8313b6-897b-4bc2-894b-f850ed75f63b</name> + <entityField>AB_KEYWORD_CATEGORY_ID</entityField> </neonTableColumn> <neonTableColumn> <name>682fd08f-b121-469c-b86e-afdf013dbc7b</name> @@ -45,8 +45,8 @@ <entityField>#ICON</entityField> </neonTreeTableColumn> <neonTreeTableColumn> - <name>f1e9f968-4b54-4923-a5e4-876097d9e340</name> - <entityField>CONTAINER</entityField> + <name>860e78bc-65e9-4104-b80c-1255abf27d2c</name> + <entityField>AB_KEYWORD_CATEGORY_ID</entityField> </neonTreeTableColumn> <neonTreeTableColumn> <name>5054102d-62aa-43c4-9a38-5ed7d31eecb9</name> diff --git a/neonView/KeywordCategoryEdit_view/KeywordCategoryEdit_view.aod b/neonView/KeywordCategoryEdit_view/KeywordCategoryEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..4d8ce0be1755300dbf67616c48f70cb4cea1618f --- /dev/null +++ b/neonView/KeywordCategoryEdit_view/KeywordCategoryEdit_view.aod @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> + <name>KeywordCategoryEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <genericViewTemplate> + <name>CategoryEdit</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>baf076dd-1119-4604-82da-47b462428b46</name> + <entityField>NAME</entityField> + </entityFieldLink> + <entityFieldLink> + <name>4ab1775f-9ab2-4c41-a9a7-e366df2a85cb</name> + <entityField>SORTINGBY</entityField> + </entityFieldLink> + <entityFieldLink> + <name>6f01e1b2-15fb-4734-a14e-e788aa8096f2</name> + <entityField>SORTINGDIRECTION</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>b5c2e29f-564c-4d78-873b-43e9376534d8</name> + <entityField>OrderedBySortingFieldKeywordsConsumer</entityField> + <view>KeywordEntryMultiEdit_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/KeywordCategoryFilter_view/KeywordCategoryFilter_view.aod b/neonView/KeywordCategoryFilter_view/KeywordCategoryFilter_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..468500bf58a471aff225f42c3d4311bc5c954c5d --- /dev/null +++ b/neonView/KeywordCategoryFilter_view/KeywordCategoryFilter_view.aod @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> + <name>KeywordCategoryFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>CategoryTable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>b5f0f090-3dd8-4407-a1a0-7eff8391017e</name> + <entityField>NAME</entityField> + </neonTableColumn> + <neonTableColumn> + <name>aeb1a10f-0d69-4943-b0d8-0c4395d9b9db</name> + <entityField>SORTINGBY</entityField> + </neonTableColumn> + <neonTableColumn> + <name>10b78f77-574f-4113-bc67-397419dd579b</name> + <entityField>SORTINGDIRECTION</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/KeywordCategoryPreview_view/KeywordCategoryPreview_view.aod b/neonView/KeywordCategoryPreview_view/KeywordCategoryPreview_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..febe2de1022188fc96b43928c5b550236cbaf8df --- /dev/null +++ b/neonView/KeywordCategoryPreview_view/KeywordCategoryPreview_view.aod @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> + <name>KeywordCategoryPreview_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <headerFooterLayout> + <name>layout</name> + <header>header</header> + </headerFooterLayout> + </layout> + <children> + <cardViewTemplate> + <name>header</name> + <titleField>#CONTENTTITLE</titleField> + <subtitleField>SORTINGBY</subtitleField> + <descriptionField>SORTINGDIRECTION</descriptionField> + <entityField>#ENTITY</entityField> + </cardViewTemplate> + <neonViewReference> + <name>7c54144c-2653-4dcb-a2a1-3e59a78a6fd5</name> + <entityField>OrderedByNameFieldKeywordsConsumer</entityField> + <view>KeywordEntryList_view</view> + </neonViewReference> + <neonViewReference> + <name>d8e67a1f-d8de-4874-97b0-4b5b157f61a0</name> + <entityField>OrderedBySortingFieldKeywordsConsumer</entityField> + <view>KeywordEntryList_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod index 27de2596699ab9e0aa3b0368ad9765fcb55197d2..c384aecd42eea03270ea0e10cbbb34099ed6ad6b 100644 --- a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod +++ b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod @@ -16,8 +16,8 @@ <entityField>#ENTITY</entityField> <fields> <entityFieldLink> - <name>236c9d71-a619-47b5-b5a0-8d4e5bc45903</name> - <entityField>CONTAINER</entityField> + <name>8b14494e-6de4-4d2c-a4c6-a9f6613be569</name> + <entityField>AB_KEYWORD_CATEGORY_ID</entityField> </entityFieldLink> <entityFieldLink> <name>f7f66b08-521c-46bf-b6e9-3c3f130648bc</name> diff --git a/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod b/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod index f8742663636cd3fa2aef8b5aa0037649574fff70..efd8bf78f7c8605f00de542b3b0eddc416218d00 100644 --- a/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod +++ b/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod @@ -16,7 +16,7 @@ <hideContentSearch v="false" /> <entityField>#ENTITY</entityField> <defaultGroupFields> - <element>CONTAINER</element> + <element>AB_KEYWORD_CATEGORY_ID</element> </defaultGroupFields> <maxDBRow v="400" /> <isCreatable v="true" /> @@ -45,7 +45,7 @@ <name>EntriesTable</name> <hideContentSearch v="false" /> <titleField>TITLE</titleField> - <subtitleField>CONTAINER</subtitleField> + <subtitleField>AB_KEYWORD_CATEGORY_ID</subtitleField> <entityField>#ENTITY</entityField> <title></title> <columns> @@ -55,7 +55,7 @@ </neonTableColumn> <neonTableColumn> <name>7f8c3b75-62dc-4826-bad3-99aa9d471067</name> - <entityField>CONTAINER</entityField> + <entityField>AB_KEYWORD_CATEGORY_ID</entityField> </neonTableColumn> <neonTableColumn> <name>4dc50d75-d856-4fca-bd4d-d79eb3c8769f</name> diff --git a/neonView/KeywordEntryList_view/KeywordEntryList_view.aod b/neonView/KeywordEntryList_view/KeywordEntryList_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..7353fb5fc38b0cdcb277b7cdf492046cd4816ed9 --- /dev/null +++ b/neonView/KeywordEntryList_view/KeywordEntryList_view.aod @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> + <name>KeywordEntryList_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <titledListViewTemplate> + <name>KeywordList</name> + <titleField>KEYID_alwaysReadOnly</titleField> + <fixedDrawer v="true" /> + <autoNewRow v="false" /> + <entityField>#ENTITY</entityField> + <isDeletable v="false" /> + <isCreatable v="false" /> + <isEditable v="false" /> + <columns> + <neonTitledListTableColumn> + <name>059eac66-9187-4d85-bcd3-0b769b63b54c</name> + <entityField>TITLE</entityField> + </neonTitledListTableColumn> + <neonTitledListTableColumn> + <name>ec5245a3-69a2-4daa-9fc8-79378c77e5d5</name> + <entityField>TITLE_TRANSLATED</entityField> + </neonTitledListTableColumn> + <neonTitledListTableColumn> + <name>123bfe61-eef6-48fd-bd03-6455394dcb79</name> + <entityField>SORTING</entityField> + </neonTitledListTableColumn> + </columns> + </titledListViewTemplate> + </children> +</neonView> diff --git a/neonView/KeywordEntryMultiEdit_view/KeywordEntryMultiEdit_view.aod b/neonView/KeywordEntryMultiEdit_view/KeywordEntryMultiEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..a0ce7c0a967e383c7fc807f8fa60a966317004e7 --- /dev/null +++ b/neonView/KeywordEntryMultiEdit_view/KeywordEntryMultiEdit_view.aod @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> + <name>KeywordEntryMultiEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <genericMultipleViewTemplate> + <name>KeywordMultiEdit</name> + <entityField>#ENTITY</entityField> + <isCreatable v="false" /> + <isDeletable v="false" /> + <isEditable v="true" /> + <columns> + <neonGenericMultipleTableColumn> + <name>4781603d-8c65-4267-9354-6faf8713ce62</name> + <entityField>KEYID_alwaysReadOnly</entityField> + <fullWidth v="false" /> + </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>94f13a43-c915-4eba-857c-b0e389c3ee75</name> + <entityField>TITLE</entityField> + </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>2d1f25dc-03ab-4735-996f-be2b6477e740</name> + <entityField>TITLE_TRANSLATED</entityField> + </neonGenericMultipleTableColumn> + </columns> + </genericMultipleViewTemplate> + </children> +</neonView> diff --git a/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod b/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod index 31e0284b8d08e317abd164281b40d65a318dfb58..d87afc69b390fb15619324fea66cddf89115c71e 100644 --- a/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod +++ b/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod @@ -12,7 +12,7 @@ <cardViewTemplate> <name>Header</name> <titleField>TITLE</titleField> - <subtitleField>CONTAINER</subtitleField> + <subtitleField>AB_KEYWORD_CATEGORY_ID</subtitleField> <descriptionField>KEYID</descriptionField> <entityField>#ENTITY</entityField> </cardViewTemplate> diff --git a/process/ChecklistEntryRegistry_basic/process.js b/process/ChecklistEntryRegistry_basic/process.js index 061a6f5a5d961d59dafa3e772cab99b0f7bc2c1f..d95e132e9d51ab5497e510d19b032ba92921d027 100644 --- a/process/ChecklistEntryRegistry_basic/process.js +++ b/process/ChecklistEntryRegistry_basic/process.js @@ -1,3 +1,4 @@ +import("Keyword_lib"); import("system.logging"); import("system.eMath"); import("system.datetime"); @@ -239,7 +240,7 @@ $ChecklistEntryRegistry.salesprojectTeamRoles = function(){ var memberRows = _getRows(null, "Member_entity", ["MEMBERROLE"], [["EnableMSTeams_param", spRows[0]["MST_TEAM_ID"]], ["ObjectRowId_param", spRows[0]["SALESPROJECTID"]]], "WithDistrictResponsibles"); var allMemberRoles = newSelect(SqlBuilder.caseWhen(newWhere("AB_KEYWORD_ENTRY.KEYID", "MEMROLEDISTRICTRESPONSIBLE")).thenString("70cbad1b-eac6-4369-ba50-4946e0fbcb3a").elseValue("AB_KEYWORD_ENTRY.KEYID")) .from("AB_KEYWORD_ENTRY") - .where("AB_KEYWORD_ENTRY.CONTAINER", "MemberRole") + .where("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", KeywordUtils.getCategoryIdByName($KeywordRegistry.MemberRole())) .arrayColumn(); for (let i = 0; i < memberRows.length; i++) { diff --git a/process/KeywordData_lib/KeywordData_lib.aod b/process/KeywordData_lib/KeywordData_lib.aod index 6955ec39f1f168d9c31fb731c2d6aa16fd02b00c..75431a8c0314bbe8ce20a2362be8e1dd40c6cc96 100644 --- a/process/KeywordData_lib/KeywordData_lib.aod +++ b/process/KeywordData_lib/KeywordData_lib.aod @@ -3,6 +3,7 @@ <name>KeywordData_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/KeywordData_lib/process.js</process> + <alias>Data_alias</alias> <variants> <element>LIBRARY</element> </variants> diff --git a/process/KeywordData_lib/process.js b/process/KeywordData_lib/process.js index a4fbd6bd4e44b0b1068e110f60e27107bceb47ee..a367023d23685e3bd9590be36b5e0e793de93298 100644 --- a/process/KeywordData_lib/process.js +++ b/process/KeywordData_lib/process.js @@ -1,30 +1,32 @@ -import("system.translate"); +import("Keyword_lib"); import("system.db"); +import("system.translate"); import("DataCaching_lib"); import("Sql_lib"); -/* -This is a experimental library. -The code will definetly change in the future while not keeping the same functionparameters and calls. You should not use this except you excatly know what you're doing. -Since the functions will change, comments are written for the future functions. - -The idea behind this is to maintain data in cached form (client-context-side)) for various keyword-constructs. +/** + * This is an experimental library. + * The code will definitely change in the future while not keeping the same function parameters and calls. You should not use this except you exactly know what you're doing. + * Since the functions will change, comments are written for the future functions. + * + * The idea behind this is to maintain data in cached form (client-context-side)) for various keyword-constructs. */ -function KeywordData(){} +function KeywordData() {} -KeywordData.getSimpleData = function (pKeywordContainer, pLocale, pOnlyActives) +KeywordData.getSimpleData = function(pKeywordContainer, pLocale, pOnlyActives) { - var onlyActives = (pOnlyActives == undefined ? true : pOnlyActives); + var onlyActives = pOnlyActives == undefined ? true : pOnlyActives; var flags = "#" + (onlyActives ? "1" : "0"); var identifier = "KeywordSimpleData_" + pKeywordContainer + flags; var cache = new CachedData(identifier, true, pLocale); - return cache.load(function (pTranslationNecessary, pLocale){ + + return cache.load(function(pTranslationNecessary, pLocale) { var keywordEntrySelect = newSelect("AB_KEYWORD_ENTRY.KEYID, AB_KEYWORD_ENTRY.TITLE", "Data_alias") .from("AB_KEYWORD_ENTRY") .orderBy("AB_KEYWORD_ENTRY.SORTING asc, AB_KEYWORD_ENTRY.TITLE asc") - .where("AB_KEYWORD_ENTRY.CONTAINER", pKeywordContainer); - + .where("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", KeywordUtils.getCategoryIdByName(pKeywordContainer)); + if (onlyActives) keywordEntrySelect.and("AB_KEYWORD_ENTRY.ISACTIVE", "1"); @@ -34,36 +36,67 @@ KeywordData.getSimpleData = function (pKeywordContainer, pLocale, pOnlyActives) { keywordData[i][1] = translate.text(keywordData[i][1], pLocale); } + return keywordData.slice(0); }); }; +KeywordData.getSimpleData2 = function(pKeywordContainer, pLocale, pOnlyActives) +{ + var onlyActives = pOnlyActives == undefined ? true : pOnlyActives; + var flags = "#" + (onlyActives ? "1" : "0"); + var identifier = "KeywordSimpleData_" + pKeywordContainer + flags; + var cache = new CachedData(identifier, true, pLocale); + + return cache.load(function(pTranslationNecessary, pLocale) { + var keywordEntrySelect = newSelect("AB_KEYWORD_ENTRY.KEYID, AB_KEYWORD_ENTRY.TITLE", "Data_alias") + .from("AB_KEYWORD_ENTRY") + .join("AB_KEYWORD_CATEGORY", "AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID = AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID") + .orderBy("AB_KEYWORD_ENTRY.SORTING asc, AB_KEYWORD_ENTRY.TITLE asc") + .where("AB_KEYWORD_CATEGORY.NAME", pKeywordContainer); + + if (onlyActives) + keywordEntrySelect.and("AB_KEYWORD_ENTRY.ISACTIVE", "1"); + + var keywordData = keywordEntrySelect.table(); -KeywordData.getKeyIdMap = function (pKeywordContainer, pLocale) + for (var i = 0, l = keywordData.length; i < l; i++) + { + keywordData[i][1] = translate.text(keywordData[i][1], pLocale); + } + + return keywordData.slice(0); + }); +}; + +KeywordData.getKeyIdMap = function(pKeywordContainer, pLocale) { var cache = new CachedData("KeywordKeyidMap_" + pKeywordContainer, true, pLocale); - return cache.load(function (pTranslationNecessary, pLocale){ + + return cache.load(function(pTranslationNecessary, pLocale) { var keywordData = KeywordData.getSimpleData(pKeywordContainer, pLocale) var res = {}; var keyid, title; + for (var i = 0, l = keywordData.length; i < l; i++) { [keyid, title] = keywordData[i]; - res[keyid] = title;//title comes already translated through the getData-function + res[keyid] = title; // title comes already translated through the getData-function } + return res; }); }; -KeywordData.getKeywordAttributeRelations = function (pKeywordContainer) +KeywordData.getKeywordAttributeRelations = function(pKeywordContainer) { - return CachedData.make("KeywordAttributeRelationObj_" + pKeywordContainer, false, function(){ + return CachedData.make("KeywordAttributeRelationObj_" + pKeywordContainer, false, function() { var data = newSelect("AB_KEYWORD_ENTRY.KEYID, AB_KEYWORD_ATTRIBUTE.NAME, AB_KEYWORD_ATTRIBUTE.KIND, \n\ AB_KEYWORD_ATTRIBUTERELATION.CHAR_VALUE, AB_KEYWORD_ATTRIBUTERELATION.LONG_CHAR_VALUE, AB_KEYWORD_ATTRIBUTERELATION.NUMBER_VALUE, AB_KEYWORD_ATTRIBUTERELATION.BOOL_VALUE") .from("AB_KEYWORD_ENTRY") - .join("AB_KEYWORD_ATTRIBUTE", "AB_KEYWORD_ATTRIBUTE.CONTAINER = AB_KEYWORD_ENTRY.CONTAINER") + .join("AB_KEYWORD_ATTRIBUTE", "AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_CATEGORY_ID = AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID") .leftJoin("AB_KEYWORD_ATTRIBUTERELATION", newWhere("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ATTRIBUTE_ID = AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_ATTRIBUTEID") .and("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID = AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID")) - .where("AB_KEYWORD_ENTRY.CONTAINER", pKeywordContainer) + .where("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", KeywordUtils.getCategoryIdByName(pKeywordContainer)) .table(); var res = {}; @@ -73,11 +106,13 @@ KeywordData.getKeywordAttributeRelations = function (pKeywordContainer) { [keyId, name, type, charVal, longCharVal, numVal, boolVal] = data[i]; name = name.trim(); - type = type.trim(); + type = type.trim(); + if (res[keyId] == undefined) res[keyId] = {}; var parsedValue = null; + switch(type) { case "NUMBER_VALUE": @@ -98,16 +133,17 @@ KeywordData.getKeywordAttributeRelations = function (pKeywordContainer) } return res; }); - + return data; } -function LanguageData(){} +function LanguageData() {} LanguageData.getData = function() { var cache = new CachedData("LanguagesData", false); - return cache.load(function (pTranslationNecessary, pLocale){ + + return cache.load(function(pTranslationNecessary, pLocale) { var data = db.table("select AB_LANGUAGE.ISO3, AB_LANGUAGE.NAME_LATIN from AB_LANGUAGE"); return data; }); @@ -117,16 +153,19 @@ LanguageData.getIso3Map = function(pLocale, pAlias) { var dbAlias = pAlias || db.getCurrentAlias(); var cache = new CachedData("LanguagesISO3Map", true, pLocale, dbAlias); - var cachedData = cache.load(function (pTranslationNecessary, pLocale, pAlias){ + var cachedData = cache.load(function(pTranslationNecessary, pLocale, pAlias) { var data = db.table("select AB_LANGUAGE.ISO3, AB_LANGUAGE.ISO2, AB_LANGUAGE.NAME_LATIN from AB_LANGUAGE", pAlias); var res = {}; var iso3, iso2, countryName; + for (var i = 0, l = data.length; i < l; i++) { [iso3, iso2, countryName] = data[i]; res[iso3] = {name: translate.text(countryName, pLocale), iso2: iso2}; } + return res; }); + return cachedData; }; \ No newline at end of file diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js index dd8986377eaaff95d792cc821b8be28b39634724..3f33564d881f46aa07e062522eb22d7a89dbbea8 100644 --- a/process/Keyword_lib/process.js +++ b/process/Keyword_lib/process.js @@ -1,10 +1,11 @@ -import("KeywordRegistry_basic"); -import("KeywordData_lib"); -import("system.vars"); -import("system.SQLTYPES"); +import("system.entities"); import("system.db"); -import("system.translate"); import("system.neon"); +import("system.SQLTYPES"); +import("system.translate"); +import("system.vars"); +import("KeywordData_lib"); +import("KeywordRegistry_basic"); import("Sql_lib"); /** @@ -12,14 +13,14 @@ import("Sql_lib"); * * @class */ -function KeywordUtils(){} +function KeywordUtils() {} /** -* resolves KEYIDs of a keywordentry into the specific title +* resolves KEYIDs of a KeywordEntry into the specific title * * @param {String} pContainerName name of the keyword container that shall be resolved * @param {String} pDbFieldName name fo the database field where the KEYID-value is stored -* @param {String} [pLocale=current client language] specifies the locale for translating the title; can be false if nothing shalle be translated +* @param {String} [pLocale=current client language] specifies the locale for translating the title; can be false if nothing shall be translated * * @return {String} a SQL-expression (case-when-statement) that resolves the KEYID into the title */ @@ -27,20 +28,23 @@ KeywordUtils.getResolvedTitleSqlPart = function(pContainerName, pDbFieldName, pL { var keywordData = KeywordData.getSimpleData(pContainerName, pLocale); var resSql = SqlUtils.getResolvingCaseWhen(keywordData, pDbFieldName, false); + return SqlUtils.translateStatementWithQuotes(resSql); }; /** * returns a specific name (translated) - this is normally the view-value - of a given keyword; - * <br/>if the key could not be found an empty string "" is returned + * <br/>if the key could not be found an empty string "" is returned* * @param {String} keywordContainer specifies the type of the keyword and therefore the list elements; e.g. "COUNTRY" * @param {String} key id value of the keyword where the view-value shall be searched * @param {String} [locale=locale depending on current client/servercontext] Language-value for translations + * * @return {String} representation of the translated name of the keyword-key + * * @example * var histMedium; * histMedium = vars.get("$field.MEDIUM"); - * if (histMedium){ + * if (histMedium) { * result.string(vars.get("$field.SUBJECT") + " (" + LegacyKeywordUtils.getViewValue("ACTIVITY.MEDIUM", histMedium) + ")"); * } */ @@ -48,11 +52,10 @@ KeywordUtils.getViewValue = function(keywordContainer, key, locale) { if (!key) return ""; - + var data = KeywordData.getKeyIdMap(keywordContainer, locale); - if (data[key] == undefined) - return ""; - return data[key]; + + return data[key] == undefined ? "" : data[key]; }; /** @@ -68,12 +71,10 @@ KeywordUtils.getAttributeRelationsByKey = function(pKeyId, pContainerName) { if (!pKeyId) return ""; - + var data = KeywordData.getKeywordAttributeRelations(pContainerName); - if (data[pKeyId] == undefined) - return {}; - else - return data[pKeyId]; + + return data[pKeyId] == undefined ? {} : data[pKeyId]; }; /** @@ -90,10 +91,12 @@ KeywordUtils.getAttributeRelationsByKey = function(pKeyId, pContainerName) KeywordUtils.getAttributeRelation = function(pKeyId, pContainerName, pAttrName, pDefault) { var attributes = KeywordUtils.getAttributeRelationsByKey(pKeyId, pContainerName); + if (attributes && attributes[pAttrName] != null) { return attributes[pAttrName]; } + return pDefault !== undefined ? pDefault : null; }; @@ -105,16 +108,76 @@ KeywordUtils.getAttributeRelation = function(pKeyId, pContainerName, pAttrName, KeywordUtils.getContainerNames = function() { //do not cache this list since - // a) the list can easly change when a new container is created + // a) the list can easily change when a new container is created // b) where this is called it's not relevant in terms of performance - //!SqlBuilder - var list = db.array(db.COLUMN, "select distinct AB_KEYWORD_ENTRY.CONTAINER from AB_KEYWORD_ENTRY order by AB_KEYWORD_ENTRY.CONTAINER asc"); - return list; + return db.array(db.COLUMN, "select AB_KEYWORD_CATEGORY.NAME from AB_KEYWORD_CATEGORY order by AB_KEYWORD_CATEGORY.NAME asc"); +}; + +/** + * returns the category name (former "keyword container") of a KeywordCategory by the given UUID or an empty string if it does not exist + * + * @param {String} pCategoryId UUID of the KeywordCategory + * + * @return {String} category name as string + */ +KeywordUtils.getCategoryNameById = function(pCategoryId) +{ + let categoryName = ""; + + if(pCategoryId) { + let resultValue = newSelect("AB_KEYWORD_CATEGORY.NAME") + .from("AB_KEYWORD_CATEGORY") + .where("AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID", pCategoryId) + .cell(); + + if(resultValue) + categoryName = resultValue; + } + + return categoryName; +}; + + +/** + * returns the UUID of a KeywordCategory by the category name (fromer keyword container) or an empty string "" if it does not exist + * + * @param {String} pName name of the Keyword category (former "keyword container") + * + * @return {String} category UUID as string + */ +KeywordUtils.getCategoryIdByName = function(pName) +{ + var res = ""; + + if(pName) + { + var nameFilter = { + "type":"group", + "operator":"AND", + "childs":[{ + "type":"row", + "name":"NAME", + "operator":"EQUAL", + "value":pName, + "key":pName, + "contenttype":"TEXT" + }] + }; + var entityConfig = entities.createConfigForLoadingRows() + .entity("KeywordCategory_entity") + .fields(["#UID"]) + .filter(JSON.stringify(nameFilter)); + var entityRow = entities.getRows(entityConfig); + if (entityRow.length > 0) + res = entityRow[0]["#UID"]; + } + + return res; }; /** * provides a translated list of keyword-entry-titles in the system filtered by a containerName; -* usefull for lists where the key is the name which is then a editable displayValue +* useful for lists where the key is the name which is then a editable displayValue * * @param {String} pContainerName name of the keyword container for filtering * @param {String} [pLocale=locale depending on current client/servercontext] Language-value for translations @@ -124,19 +187,20 @@ KeywordUtils.getContainerNames = function() KeywordUtils.getEntryNamesByContainer = function(pContainerName, pLocale) { var data = KeywordData.getSimpleData(pContainerName, pLocale); - data = data.map(function (v){ + data = data.map(function(v) { return v[1]; }); + return data; }; /** * provides a translated list of keyword-entry-titles and its ids in the system filtered by a containerName; -* usefull for lists where the key is the name which is then a editable displayValue +* useful for lists where the key is the name which is then a editable displayValue * * @param {String} pContainerName name of the keyword container for filtering -* * @param {String} [pLocale=locale depending on current client/servercontext] Language-value for translations +* @param {String} [pLocale=locale depending on current client/servercontext] Language-value for translations * * @return {String[]} 2D-Array in the form of [[id1, translatedTitle1], [idN, translatedTitleN]] */ @@ -145,14 +209,16 @@ KeywordUtils.getEntryNamesAndIdsByContainer = function(pContainerName, pLocale) //TODO: this can be propably removed when the "Salesproject_entity.REASONS.dropDownProcess.js" is replaced by a consumer var list = newSelect("AB_KEYWORD_ENTRY.KEYID, AB_KEYWORD_ENTRY.TITLE") .from("AB_KEYWORD_ENTRY") - .where("AB_KEYWORD_ENTRY.CONTAINER", pContainerName) + .join("AB_KEYWORD_CATEGORY", "AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID = AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID") + .where("AB_KEYWORD_CATEGORY.NAME", pContainerName) .orderBy("AB_KEYWORD_ENTRY.SORTING asc, AB_KEYWORD_ENTRY.TITLE asc") .table(); - - list = list.map(function (elem){ + + list = list.map(function(elem) { elem[1] = pLocale ? translate.text(elem[1], pLocale) : translate.text(elem[1]); return elem; }); + return list; }; @@ -168,27 +234,29 @@ KeywordUtils.getEntryNamesAndIdsByContainer = function(pContainerName, pLocale) KeywordUtils.exists = function(pKeyId, pContainerName) { //a check if a keyword exists should always be on the origin data and not the cache, so do not cache here - return parseInt( - newSelect("count(*)") - .from("AB_KEYWORD_ENTRY") - .where("AB_KEYWORD_ENTRY.KEYID", pKeyId) - .and("AB_KEYWORD_ENTRY.CONTAINER", pContainerName) - .cell(true, "0") - ) > 0; + var countValue = newSelect("count(*)") + .from("AB_KEYWORD_ENTRY") + .join("AB_KEYWORD_CATEGORY", "AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID = AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID") + .where("AB_KEYWORD_ENTRY.KEYID", pKeyId) + .and("AB_KEYWORD_CATEGORY.NAME", pContainerName) + .cell(true, "0") +; + + return parseInt(countValue) > 0; }; /** * Get the first keyword Keyid from a container * * @param {String} pContainerName name of the keyword container that shall be resolved - * @param {String} [pLocale=current client language] specifies the locale for translating the title; can be false if nothing shalle be translated + * @param {String} [pLocale=current client language] specifies the locale for translating the title; can be false if nothing shall be translated * * @return {String} the keyid or "" */ KeywordUtils.getFirst = function(pContainerName, pLocale) { var keywordData = KeywordData.getSimpleData(pContainerName, pLocale); - + return (keywordData && keywordData.length > 0 ? keywordData[0][0] : ""); }; @@ -197,7 +265,8 @@ KeywordUtils.getFirst = function(pContainerName, pLocale) * * @param {String} pContainerName specifies the type of the keyword and therefore the list elements; * e.g. "COUNTRY"; use an entry of the $KeywordRegistry here - * @return translated name, if it exists in the switch case + * + * @return {String} translated name, if it exists in the switch case */ KeywordUtils.getTranslatedContainer = function(pContainerName) { @@ -207,19 +276,18 @@ KeywordUtils.getTranslatedContainer = function(pContainerName) return translate.text("Phase"); case "SalesprojectState": return translate.text("State"); - break; default: - return "Please add " + pContainerName + " to the switch case in Salesproject_lib"; + return "Please add '" + pContainerName + "' to the switch case in Salesproject_lib"; } } /** - * object that provides featrues for a single keyword attribute; initalizes itself on creation with a specific keyword-attribute + * object that provides features for a single keyword attribute; initializes itself on creation with a specific keyword-attribute * * @param {String} pContainerName specifies the type of the keyword and therefore the list elements; * e.g. "COUNTRY"; use an entry of the $KeywordRegistry here - * @param {String} pAttributeName the name of the keyword attribute that shall be initalized + * @param {String} pAttributeName the name of the keyword attribute that shall be initialized * @param {String} [pDefault=undefined] the default value -> Does not throw an error, if default value exists. * * @class @@ -232,11 +300,12 @@ function KeywordAttribute(pContainerName, pAttributeName, pDefault) var keywordAttrData = newSelect("AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_ATTRIBUTEID, AB_KEYWORD_ATTRIBUTE.KIND") .from("AB_KEYWORD_ATTRIBUTE") - .where("AB_KEYWORD_ATTRIBUTE.CONTAINER", pContainerName) - .and("AB_KEYWORD_ATTRIBUTE.NAME", pAttributeName) + .join("AB_KEYWORD_CATEGORY", "AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_CATEGORY_ID = AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID") + .where("AB_KEYWORD_ATTRIBUTE.NAME", pAttributeName) + .and("AB_KEYWORD_CATEGORY.NAME", pContainerName) .arrayRow(); - - if (keywordAttrData.length > 0) + + if (keywordAttrData.length > 0) { this.id = keywordAttrData[0]; this.type = keywordAttrData[1]; @@ -259,22 +328,23 @@ function KeywordAttribute(pContainerName, pAttributeName, pDefault) */ KeywordAttribute.prototype.getValue = function(pKeyId) { - if (this.exists()) + if (this.exists()) { var attrValue = newSelect(this.dbField) .from("AB_KEYWORD_ENTRY") .join("AB_KEYWORD_ATTRIBUTERELATION", "AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID = AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID") - .where("AB_KEYWORD_ENTRY.CONTAINER", this.container) + .join("AB_KEYWORD_CATEGORY", "AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID = AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID") + .where("AB_KEYWORD_ENTRY.KEYID", pKeyId) .and("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ATTRIBUTE_ID", this.id) - .and("AB_KEYWORD_ENTRY.KEYID", pKeyId) + .and("AB_KEYWORD_CATEGORY.NAME", this.container) .cell(); if (attrValue) return attrValue; - + if (this.defaultValue) return this.defaultValue; - + throw new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword \"%1\" from container \"%2\"", [this.attribute, pKeyId, this.container])); } else if (this.defaultValue == undefined) @@ -286,21 +356,21 @@ KeywordAttribute.prototype.getValue = function(pKeyId) /** * get a SqlBuilder object for this keyword attribute. You can easily add additional conditions to it. * - * @return {SqlBuilder} a SqlBuilder which contains a select for the entry-id's, joins to entry and attribute - * and conditions for the container and the attribute-name. + * @return {SqlBuilder} a SqlBuilder which contains a select for the entry-id's, joins to entry and attribute and conditions for the container and the attribute-name. */ -KeywordAttribute.prototype.getSqlBuilderSelect = function() +KeywordAttribute.prototype.getSqlBuilderSelect = function() { return newSelect("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID") - .from("AB_KEYWORD_ATTRIBUTERELATION") - .join("AB_KEYWORD_ENTRY", "AB_KEYWORD_ENTRYID = AB_KEYWORD_ENTRY_ID", "attrEntry") - .join("AB_KEYWORD_ATTRIBUTE", "AB_KEYWORD_ATTRIBUTEID = AB_KEYWORD_ATTRIBUTE_ID") - .where(["AB_KEYWORD_ENTRY", "CONTAINER", "attrEntry"], this.container) - .and("AB_KEYWORD_ATTRIBUTE.NAME", this.attribute) + .from("AB_KEYWORD_ATTRIBUTERELATION") + .join("AB_KEYWORD_ATTRIBUTE", "AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_ATTRIBUTEID = AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ATTRIBUTE_ID") + .join("AB_KEYWORD_CATEGORY", "AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID = AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_CATEGORY_ID") + .where("AB_KEYWORD_CATEGORY.NAME", this.container) + .and("AB_KEYWORD_ATTRIBUTE.NAME", this.attribute) } /** * check if the Container can have the attribute. + * * @return {Boolean} true if it exists, false if not */ KeywordAttribute.prototype.exists = function() @@ -308,18 +378,19 @@ KeywordAttribute.prototype.exists = function() return this.id != undefined && this.type != undefined && this.dbField != undefined; } + /** - * provides methods for interactions with the sepcial-keywords "LANGUAGE" + * provides methods for interactions with the special-keywords "LANGUAGE" * * @class */ -function LanguageKeywordUtils(){} +function LanguageKeywordUtils() {} /** -* resolves Languagecode into the latin name +* resolves LanguageCode into the latin name * * @param {String} pDbFieldName name fo the database field where the ISO3-value is stored -* @param {String} [pLocale=current client language] specifies the locale for translating the title; can be false if nothing shalle be translated +* @param {String} [pLocale=current client language] specifies the locale for translating the title; can be false if nothing shall be translated * * @return {String} a SQL-expression (case-when-statement) */ @@ -343,19 +414,20 @@ LanguageKeywordUtils.getViewValue = function(key, locale) { if (!key) return ""; - + var languageMap = LanguageData.getIso3Map(locale); var languageInfo = languageMap[key]; + if (languageInfo == undefined) return ""; + var title = languageInfo.name; - if (title == undefined) - return ""; - return title; + + return title == undefined ? "" : title; }; /** - * deterines on server- and clientside the matching iso2-code to a iso3 by generating a map and then returning the matched result; + * determines on server- and clientside the matching iso2-code to a iso3 by generating a map and then returning the matched result; * on clientside the map is cached * * @param {String} key id value (iso3) of the language where the value shall be searched @@ -368,13 +440,15 @@ LanguageKeywordUtils.Iso2FromIso3 = function(key, pAlias) { if (!key) return ""; + //maybe this should be retrieved by a simple select on the serverside since LanguageData-methods are only cached on the client side var languageMap = LanguageData.getIso3Map(null, pAlias); var languageInfo = languageMap[key]; + if (languageInfo == undefined) return ""; + var res = languageInfo.iso2; - if (res == undefined) - return ""; - return res; + + return res == undefined ? "" : res; }; \ No newline at end of file diff --git a/process/Keyword_test/process.js b/process/Keyword_test/process.js index d1b1d910e9dfd985b8c089830f410b21f0151c25..dca6647a0cfd8add4855f4727934ce8c2e8baaac 100644 --- a/process/Keyword_test/process.js +++ b/process/Keyword_test/process.js @@ -1,143 +1,140 @@ +import("Sql_lib"); import("system.result"); import("system.translate"); import("system.vars"); import("Keyword_lib"); import("UnitTest_lib"); -//this test will not work currently -//TODO: renable and fix the tests - -//var getContainerNames = new TestSuite("KeywordUtils.getContainerNames", [ -// new Test("should return an alphabetically ascending ordered list of all keyword containers", -// function(pTester) { -// var actualValue = KeywordUtils.getContainerNames(); -// -// pTester.expectThat(actualValue).isArray().assert(); -// pTester.expectThat(actualValue).hasMinLength(1).assert(); -// pTester.expectThat(actualValue).elementAt(0).equals("ActivityCategory").assert(); -// pTester.expectThat(actualValue).elementAt(-1).equals("YesNo").assert(); -// } -// ) -//]); -// -// -//var getCategoryNameById = new TestSuite("KeywordUtils.getCategoryNameById", [ -// new Test("should return existing keyword category name for correct uuid", -// function(pTester) { -// var actualValue = KeywordUtils.getCategoryNameById("a55654b1-6a19-4d0c-b08d-cfbc12b5f7b0"); -// -// pTester.expectThat(actualValue).equals("MemberRole").assert(); -// } -// ), -// -// new Test("should return non-existing keyword category name for wrong uuid", -// function(pTester) { -// var actualValue = KeywordUtils.getCategoryNameById("a55654b1-6a19-4d0c-b08d-cfbc12b5f7b1"); -// -// pTester.expectThat(actualValue).equals("<unknown>").assert(); -// } -// ), -// -// new Test("should return non-existing keyword category name for missing uuid", -// function(pTester) { -// var actualValue = KeywordUtils.getCategoryNameById(); -// -// pTester.expectThat(actualValue).equals("<unknown>").assert(); -// } -// ), -//]); -// -// -//var getCategoryIdByName = new TestSuite("KeywordUtils.getCategoryIdByName", [ -// new Test("should return existing keyword uuid for correct category name", -// function(pTester) { -// var actualValue = KeywordUtils.getCategoryIdByName("MemberRole"); -// -// pTester.expectThat(actualValue).equals("a55654b1-6a19-4d0c-b08d-cfbc12b5f7b0").assert(); -// } -// ), -// -// new Test("should throw exception for wrong keyword category name", -// function(pTester) { -// var exception = new Error(translate.withArguments("no keyword category \"%0\" found", ["AddressTypes"])); -// pTester.expectThat(function() { -// KeywordUtils.getCategoryIdByName("AddressTypes"); -// }).throwsException(exception).assert(); -// } -// ), -// -// new Test("should throw exception for missing keyword category name", -// function(pTester) { -// var exception = new Error(translate.withArguments("no keyword category \"%0\" found", [""])); -// pTester.expectThat(function() { -// KeywordUtils.getCategoryIdByName(); -// }).throwsException(exception).assert(); -// } -// ), -//]); -// -// -//var getEntryNamesAndIdsByContainer = new TestSuite("KeywordUtils.getEntryNamesAndIdsByContainer", [ -// new Test("should return an array of all keywords and their ID's for given container", -// function(pTester) { -// var actualValue = KeywordUtils.getEntryNamesAndIdsByContainer("ActivityDirection"); -// -// pTester.expectThat(actualValue).isArray().assert(); -// pTester.expectThat(actualValue).hasMinLength(1, {name: "array"}).assert(); -// pTester.expectThat(actualValue).elementAt(0).isArray().assert(); -// pTester.expectThat(actualValue).elementAt(0).hasLength(2).assert(); -// } -// ), -// -// new Test("should return an empty array for non-existent container", -// function(pTester) { -// var actualValue = KeywordUtils.getEntryNamesAndIdsByContainer("Asdf"); -// -// pTester.expectThat(actualValue).isArray().assert(); -// pTester.expectThat(actualValue).hasLength(0, {name: "array"}).assert(); -// } -// ), -//]); -// -// -//var exists = new TestSuite("KeywordUtils.exists", [ -// new Test("should return a boolean indicating that a known keyword in a known container exists", -// function(pTester) { -// var actualValue = KeywordUtils.exists("VISIT", "ActivityCategory"); -// -// pTester.expectThat(actualValue).isBoolean().assert(); -// pTester.expectThat(actualValue).equals(true, "known keyword exists in known container").assert(); -// } -// ), -// -// new Test("should return a boolean indicating that an unknown keyword in a known container does not exist", -// function(pTester) { -// var actualValue = KeywordUtils.exists("ASDF", "ActivityCategory"); -// -// pTester.expectThat(actualValue).isBoolean().assert(); -// pTester.expectThat(actualValue).equals(false, "unknown keyword does not exist in known container").assert(); -// } -// ), -// -// new Test("should return a boolean indicating that a known keyword in an unknown container does not exist", -// function(pTester) { -// var actualValue = KeywordUtils.exists("VISIT", "Asdf"); -// -// pTester.expectThat(actualValue).isBoolean().assert(); -// pTester.expectThat(actualValue).equals(false, "known keyword does not exist in unknown container").assert(); -// } -// ), -//]); -// -// -//var tester = new Tester("Test Keyword_lib"); -//tester.initCoverage(KeywordUtils); -//tester.test(getContainerNames); -//tester.test(getCategoryNameById); -//tester.test(getCategoryIdByName); -//tester.test(getEntryNamesAndIdsByContainer); -//tester.test(exists); -// -//tester.summary(); -// -//result.object(tester.getResults()); \ No newline at end of file +var getContainerNames = new TestSuite("KeywordUtils.getContainerNames", [ + new Test("should return an alphabetically ascending ordered list of all keyword containers", + function(pTester) { + var actualValue = KeywordUtils.getContainerNames(); + + pTester.expectThat(actualValue).isArray().assert(); + pTester.expectThat(actualValue).hasMinLength(1).assert(); + pTester.expectThat(actualValue).elementAt(0).equals("ADVISER_ROLE").assert(); + pTester.expectThat(actualValue).elementAt(-1).equals("YesNo").assert(); + } + ) +]); + + +var getCategoryNameById = new TestSuite("KeywordUtils.getCategoryNameById", [ + new Test("should return existing keyword category name for correct uuid", + function(pTester) { + var actualValue = KeywordUtils.getCategoryNameById( + newSelect("AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID") + .from("AB_KEYWORD_CATEGORY") + .where("AB_KEYWORD_CATEGORY.NAME", "MemberRole") + .cell() + ); + + pTester.expectThat(actualValue).equals("MemberRole").assert(); + } + ), + + new Test("should return non-existing keyword category name for wrong uuid", + function(pTester) { + var actualValue = KeywordUtils.getCategoryNameById("a55654b1-6a19-4d0c-b08d-cfbc12b5f7b1"); + + pTester.expectThat(actualValue).equals("").assert(); + } + ), + + new Test("should return non-existing keyword category name for missing uuid", + function(pTester) { + var actualValue = KeywordUtils.getCategoryNameById(); + + pTester.expectThat(actualValue).equals("").assert(); + } + ), +]); + + +var getCategoryIdByName = new TestSuite("KeywordUtils.getCategoryIdByName", [ + new Test("should return existing keyword uuid for correct category name", + function(pTester) { + var actualValue = KeywordUtils.getCategoryIdByName("MemberRole"); + pTester.expectThat(actualValue).equals("b3765719-9d07-41c4-a813-18bc9056db1a").assert(); + } + ), + + new Test("should return empty string for wrong keyword category name", + function(pTester) { + var actualValue = KeywordUtils.getCategoryIdByName("XXXAddressTypesXXX"); + pTester.expectThat(actualValue).equals("").assert(); + } + ), + + new Test("should return empty string when not passing a keyword category name", + function(pTester) { + var actualValue = KeywordUtils.getCategoryIdByName(); + pTester.expectThat(actualValue).equals("").assert(); + } + ), + ]); + +var getEntryNamesAndIdsByContainer = new TestSuite("KeywordUtils.getEntryNamesAndIdsByContainer", [ + new Test("should return an array of all keywords and their ID's for given container", + function(pTester) { + var actualValue = KeywordUtils.getEntryNamesAndIdsByContainer("ActivityDirection"); + + pTester.expectThat(actualValue).isArray().assert(); + pTester.expectThat(actualValue).hasMinLength(1, {name: "array"}).assert(); + pTester.expectThat(actualValue).elementAt(0).isArray().assert(); + pTester.expectThat(actualValue).elementAt(0).hasLength(2).assert(); + } + ), + + new Test("should return an empty array for non-existent container", + function(pTester) { + var actualValue = KeywordUtils.getEntryNamesAndIdsByContainer("Asdf"); + + pTester.expectThat(actualValue).isArray().assert(); + pTester.expectThat(actualValue).hasLength(0, {name: "array"}).assert(); + } + ), +]); + + +var exists = new TestSuite("KeywordUtils.exists", [ + new Test("should return a boolean indicating that a known keyword in a known container exists", + function(pTester) { + var actualValue = KeywordUtils.exists("VISIT", "ActivityCategory"); + + pTester.expectThat(actualValue).isBoolean().assert(); + pTester.expectThat(actualValue).equals(true, "known keyword exists in known container").assert(); + } + ), + + new Test("should return a boolean indicating that an unknown keyword in a known container does not exist", + function(pTester) { + var actualValue = KeywordUtils.exists("ASDF", "ActivityCategory"); + + pTester.expectThat(actualValue).isBoolean().assert(); + pTester.expectThat(actualValue).equals(false, "unknown keyword does not exist in known container").assert(); + } + ), + + new Test("should return a boolean indicating that a known keyword in an unknown container does not exist", + function(pTester) { + var actualValue = KeywordUtils.exists("VISIT", "Asdf"); + + pTester.expectThat(actualValue).isBoolean().assert(); + pTester.expectThat(actualValue).equals(false, "known keyword does not exist in unknown container").assert(); + } + ), +]); + + +var tester = new Tester("Test Keyword_lib"); +tester.initCoverage(KeywordUtils); +tester.test(getContainerNames); +tester.test(getCategoryNameById); +tester.test(getCategoryIdByName); +tester.test(getEntryNamesAndIdsByContainer); +tester.test(exists); + +tester.summary(); + +result.object(tester.getResults()); diff --git a/process/Liquibase_lib/process.js b/process/Liquibase_lib/process.js index e673139131bf77a542021c1aa60cf1a96aadd06a..dc12de6cc2530f6df82778c8644d4add36b1ad65 100644 --- a/process/Liquibase_lib/process.js +++ b/process/Liquibase_lib/process.js @@ -77,7 +77,7 @@ LiquiUtils.exportAllTablesAsLiquibaseFiles = function(pOutFolderPath, pAuthor, p */ LiquiUtils.exportTableAsLiquibaseFiles = function(pPath, pTableName, pColumns, pCondition, pAuthor, pIncludeClearTableDirective, pAlias, pGenerateChangeSetIdFromArguments, pBlobCallbackFn, pFileName) { - var resXml = LiquiUtils._getDataXml(pAuthor, pPath, pTableName, pColumns, pCondition, pIncludeClearTableDirective, pAlias, pGenerateChangeSetIdFromArguments, pBlobCallbackFn); + var resXml = LiquiUtils.getDataXmlFromDB(pAuthor, pPath, pTableName, pColumns, pCondition, pIncludeClearTableDirective, pAlias, pGenerateChangeSetIdFromArguments, pBlobCallbackFn); if (resXml == "") return {exported: false}; var fileName = pFileName || pTableName; @@ -108,17 +108,44 @@ LiquiUtils.exportTableAsLiquibaseFiles = function(pPath, pTableName, pColumns, p * * @return {String} the liquibase-changest in xml-form */ -LiquiUtils._getDataXml = function(pAuthor, pLobPath, pTableName, pColumns, pCondition, pIncludeClearTableDirective, pAlias, pGenerateChangeSetIdFromArguments, pBlobCallbackFn) +LiquiUtils.getDataXmlFromDB = function(pAuthor, pLobPath, pTableName, pColumns, pCondition, pIncludeClearTableDirective, pAlias, pGenerateChangeSetIdFromArguments, pBlobCallbackFn) { + var alias = pAlias || db.getCurrentAlias(); + var dbData = db.table("select " + columns.join(", ") + " from " + pTableName + " " + (pCondition ? "where " + pCondition : ""), alias); + return LiquiUtils.getDataXml(pAuthor, pLobPath, pTableName, pColumns, dbData, pIncludeClearTableDirective, pAlias, pGenerateChangeSetIdFromArguments, pBlobCallbackFn); +} + +/** +* generates from a table a xml-changeset for liquibase; determines the correct liquibase-xml-attribute by db-column-type; +* if a value is empty it will not be added to the xml; will load the data at once (no paging); +* if the data contains a long CLOB-value that value has to and will be stored on the server-filesystem; +* if the data contains any BLOB-value that value has to and will be stored on the server-filesystem; +* +* @param {String} [pAuthor="autogenerated"] author that will be written into the changeset +* @param {String} [pLobPath=not set] file-path where lob files and folders will be created; the folder must be on the server; +* if you've no lob-fields you don't have to specify somehing here +* @param {String} pTableName name of the DB-table that will be exported; this is also the name of the file that is stored +* @param {Array} [pColumns=all columns within the table] db-columns within the table that will be exported +* @param {String} [pData=undefined] db-condition to limit the data that will be exported; if nothing given the whole content will be exported +* @param {Boolean} [pIncludeClearTableDirective=false] if true, a delete element is added at the beginning of the changeset for the table +* @param {String} [pAlias=current db-alias] alias where the data will be loaded from +* @param {Boolean} [pGenerateChangeSetIdFromArguments=false] if true the id of the changeset will be generated by the passed arguments to this function +* @param {function} [pBlobCallbackFn=undefined] function that returns the filename for a stored file (only for BLOB-databasetypes). <br/> +* if nothing is specified, the filename is generated automatically with a hash of the content <br/> +* The callback function retrieves all the arguments of the LiquiXTable.prototype.addBlobCol-function +* +* @return {String} the liquibase-changest in xml-form +*/ +LiquiUtils.getDataXml = function(pAuthor, pLobPath, pTableName, pColumns, pData, pIncludeClearTableDirective, pAlias, pGenerateChangeSetIdFromArguments, pBlobCallbackFn) +{ + if (!pData) + return ""; var author = pAuthor || "autogenerated"; var alias = pAlias || db.getCurrentAlias(); //cannot be added within jdito code to the XML-object, so instead add it as string var XML_HEADER_LINE = LiquiXmlUtils.xmlHeaderLineStr(); var columns = pColumns || db.getColumns(pTableName, alias); - var dbData = db.table("select " + columns.join(", ") + " from " + pTableName + " " + (pCondition ? "where " + pCondition : ""), alias); - if (dbData.length == 0) - return ""; var colTypes = db.getColumnTypes(pTableName, columns, alias);//needed to determine the correct liquibase function //every type has its function that accepts a columnName- and a value-parameter //so let's dertermine once the corresponding funtion to its type for faster access @@ -157,7 +184,7 @@ LiquiUtils._getDataXml = function(pAuthor, pLobPath, pTableName, pColumns, pCond var changeLogXml = LiquiXmlUtils.databaseChangeLogWithChangeSet(author, changesetId); if (pIncludeClearTableDirective) changeLogXml.changeSet.appendChild(<delete tableName={pTableName}/>); - dbData.forEach(function(row) + pData.forEach(function(row) { var rowObj = {}; for (let i = 0; i < columnLen; i++) @@ -212,7 +239,7 @@ LiquiXmlUtils.databaseChangeLogWithChangeSet = function (pAuthor, pChangeSetId) LiquiXmlUtils.colValue = function (name, value, valueAttribute) { var DO_NOT_ADD_EMPTY_VALUES = true;//clob and blob will ignore this setting and always skip empty values - if (DO_NOT_ADD_EMPTY_VALUES && value == "") + if (DO_NOT_ADD_EMPTY_VALUES && value === "") return null; var x = <column {valueAttribute}={value}/>; x.@name = name; diff --git a/process/migrateKeywordContainers/documentation.adoc b/process/migrateKeywordContainers/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..78555b64402db050fd1118cbbc0cb66b0d32834e --- /dev/null +++ b/process/migrateKeywordContainers/documentation.adoc @@ -0,0 +1,8 @@ += Keyword Migration +This process can be used to, either directly migrate the keywords in the database, or generating liquibase scripts which do the same. It can also write the generated files to the server log. + +[EXPORT_TO_LIQUIBASE] +If the EXPORT_TO_LIQUIBASE option is set to true, the process will generate liquibase files, otherwise it would directly modify the database tables. + +[WRITE_FILES_TO_LOG] +If the WRITE_FILES_TO_LOG is set to true, the generated liquibase files will be written to the server log. This is especially useful for cloud systems. diff --git a/process/migrateKeywordContainers/migrateKeywordContainers.aod b/process/migrateKeywordContainers/migrateKeywordContainers.aod new file mode 100644 index 0000000000000000000000000000000000000000..f75e9611757d2a319020405c1cce43b848c87471 --- /dev/null +++ b/process/migrateKeywordContainers/migrateKeywordContainers.aod @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <name>migrateKeywordContainers</name> + <title>Migrate keyword containers</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/process/migrateKeywordContainers/documentation.adoc</documentation> + <process>%aditoprj%/process/migrateKeywordContainers/process.js</process> + <publishAsWebservice v="true" /> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/migrateKeywordContainers/process.js b/process/migrateKeywordContainers/process.js new file mode 100644 index 0000000000000000000000000000000000000000..ed93803b8ec48f1ae71955bec44e3847f906ed94 --- /dev/null +++ b/process/migrateKeywordContainers/process.js @@ -0,0 +1,149 @@ +import("system.fileIO"); +import("system.db"); +import("system.SQLTYPES"); +import("system.logging"); +import("system.util"); +import("system.vars"); +import("Sql_lib"); +import("Util_lib"); +import("Liquibase_lib"); + +// Change this to switch between generating liquibase file and directly modify the db +var EXPORT_TO_LIQUIBASE = true; + +// Writes the liquibase files to log instead of writing them to disk +// Useful for cloud systems +var WRITE_FILES_TO_LOG = false; + +var oldKeywordContainers = newSelect("AB_KEYWORD_ENTRY.CONTAINER") + .from("AB_KEYWORD_ENTRY") + .where( + "AB_KEYWORD_ENTRY.CONTAINER", + newSelect("AB_KEYWORD_CATEGORY.NAME") + .from("AB_KEYWORD_CATEGORY") + .where("AB_KEYWORD_CATEGORY.NAME = AB_KEYWORD_ENTRY.CONTAINER"), + SqlBuilder.NOT_EXISTS() + ) + .groupBy("AB_KEYWORD_ENTRY.CONTAINER") + .orderBy("AB_KEYWORD_ENTRY.CONTAINER") + .arrayColumn(); + +var categories = {}; +newSelect(["AB_KEYWORD_CATEGORYID", "AB_KEYWORD_CATEGORY.NAME"]) +.from("AB_KEYWORD_CATEGORY").table().forEach(function(pRow) { + categories[pRow[1]] = pRow[0]; +}); + +if(EXPORT_TO_LIQUIBASE) +{ + function _writeLiquibaseXml(name, xmlScript) + { + var fileContent = LiquiXmlUtils.xmlHeaderLineStr() + "\n" + xmlScript; + if(WRITE_FILES_TO_LOG) + { + logging.log(name); + logging.log(fileContent + "\n"); + } + else + { + var outFolderPath = vars.get("$sys.servertemp") + "/" + "keywordMigration" + "/"; + fileIO.storeData(outFolderPath + name, + fileContent, util.DATA_TEXT, false, "UTF-8"); + } + } + + // init_keyword_category.xml + var liquibaseContainers = LiquiXmlUtils.databaseChangeLogWithChangeSet("autogenerated"); + oldKeywordContainers.forEach(function(pElement) { + var uuid = util.getNewUUID(); + categories[pElement] = uuid; + + var categoryTable = LiquiXTable.make("AB_KEYWORD_CATEGORY"); + categoryTable.addIdCol("AB_KEYWORD_CATEGORYID", uuid); + categoryTable.addStrCol("NAME", pElement); + categoryTable.addNumberCol("SORTINGBY", 0); + categoryTable.addStrCol("SORTINGDIRECTION", "ASC"); + liquibaseContainers.changeSet.insert += categoryTable.xml; + }); + _writeLiquibaseXml("init_keyword_category.xml", liquibaseContainers); + + // update_keyword_entry + var updateEntryChangeset = LiquiXmlUtils.databaseChangeLogWithChangeSet("autogenerated"); + newSelect(["AB_KEYWORD_ENTRYID", "AB_KEYWORD_ENTRY.CONTAINER"]) + .from("AB_KEYWORD_ENTRY") + .where("AB_KEYWORD_CATEGORY_ID is null") + .table().forEach(function(pRow) { + var updateXml = <update tableName="AB_KEYWORD_ENTRY"/>; + updateXml.column = <column name="AB_KEYWORD_CATEGORY_ID" value={categories[pRow[1]]}/>; + updateXml.where = <where>AB_KEYWORD_ENTRYID = {"'" + pRow[0] + "'"}</where>; + updateEntryChangeset.changeSet.update += updateXml; + }); + _writeLiquibaseXml("update_keyword_entry.xml", updateEntryChangeset); + + // update_keyword_attribute + var updateAttributeChangeset = LiquiXmlUtils.databaseChangeLogWithChangeSet("autogenerated"); + newSelect(["AB_KEYWORD_ATTRIBUTEID", "AB_KEYWORD_ATTRIBUTE.CONTAINER"]) + .from("AB_KEYWORD_ATTRIBUTE") + .where("AB_KEYWORD_CATEGORY_ID is null") + .table().forEach(function(pRow) { + var updateXml = <update tableName="AB_KEYWORD_ATTRIBUTE"/>; + updateXml.column = <column name="AB_KEYWORD_CATEGORY_ID" value={categories[pRow[1]]}/>; + updateXml.where = <where>AB_KEYWORD_ATTRIBUTEID = {"'" + pRow[0] + "'"}</where>; + updateAttributeChangeset.changeSet.update += updateXml; + }); + _writeLiquibaseXml("update_keyword_attribute.xml", updateAttributeChangeset); + + // changelog.xml + var changelogFile = LiquiXmlUtils.databaseChangeLog(); + changelogFile.include += <include relativeToChangelogFile="true" file="init_keyword_category.xml"/>; + changelogFile.include += <include relativeToChangelogFile="true" file="update_keyword_entry.xml"/>; + changelogFile.include += <include relativeToChangelogFile="true" file="update_keyword_attribute.xml"/>; + _writeLiquibaseXml("changelog.xml", changelogFile); + + logging.log("Keyword migration liquibase scripts created succesfully"); +} +else +{ + var statements = []; + + oldKeywordContainers.forEach(function(pElement) { + var uuid = util.getNewUUID(); + categories[pElement] = uuid; + + var columns = ["AB_KEYWORD_CATEGORYID", "NAME", "SORTINGBY", "SORTINGDIRECTION"]; + statements.push([ + "AB_KEYWORD_CATEGORY", + columns, + db.getColumnTypes("AB_KEYWORD_CATEGORY", columns), + [uuid, pElement, "0", "ASC"] + ]); + }); + + var FIELD_NAMES = ["AB_KEYWORD_CATEGORY_ID"]; + var FIELD_TYPES = [SQLTYPES.VARCHAR]; + + newSelect(["AB_KEYWORD_ENTRYID", "AB_KEYWORD_ENTRY.CONTAINER"]) + .from("AB_KEYWORD_ENTRY") + .where("AB_KEYWORD_CATEGORY_ID is null") + .table().forEach(function(pRow) { + statements.push([ + "AB_KEYWORD_ENTRY", + FIELD_NAMES, FIELD_TYPES, + [categories[pRow[1]]], + "AB_KEYWORD_ENTRYID = '" + pRow[0] + "'"]); + }); + + newSelect(["AB_KEYWORD_ATTRIBUTEID", "AB_KEYWORD_ATTRIBUTE.CONTAINER"]) + .from("AB_KEYWORD_ATTRIBUTE") + .where("AB_KEYWORD_CATEGORY_ID is null") + .table().forEach(function(pRow) { + statements.push([ + "AB_KEYWORD_ATTRIBUTE", + FIELD_NAMES, FIELD_TYPES, + [categories[pRow[1]]], + "AB_KEYWORD_ATTRIBUTEID = '" + pRow[0] + "'"]); + }); + + db.execute(statements); + logging.log("Keywords migrated succesfully"); +}