diff --git a/ccm-bundle-devel-wildfly-web/pom.xml b/ccm-bundle-devel-wildfly-web/pom.xml index b69b105b9..a2c15ff47 100644 --- a/ccm-bundle-devel-wildfly-web/pom.xml +++ b/ccm-bundle-devel-wildfly-web/pom.xml @@ -48,6 +48,12 @@ ccm-shortcuts ${project.parent.version} + + org.librecms + ccm-cms + ${project.parent.version} + + diff --git a/ccm-bundle-devel-wildfly-web/src/main/webapp/WEB-INF/classes/META-INF/persistence.xml b/ccm-bundle-devel-wildfly-web/src/main/webapp/WEB-INF/classes/META-INF/persistence.xml index ede5653a7..1a1bfce51 100644 --- a/ccm-bundle-devel-wildfly-web/src/main/webapp/WEB-INF/classes/META-INF/persistence.xml +++ b/ccm-bundle-devel-wildfly-web/src/main/webapp/WEB-INF/classes/META-INF/persistence.xml @@ -22,8 +22,10 @@ java:/comp/env/jdbc/libreccm/db lib/ccm-core-7.0.0-SNAPSHOT.jar + lib/ccm-cms-7.0.0-SNAPSHOT.jar lib/ccm-shortcuts-7.0.0-SNAPSHOT.jar + diff --git a/ccm-bundle-devel-wildfly/pom.xml b/ccm-bundle-devel-wildfly/pom.xml index 61d9b07ed..3406d9a08 100644 --- a/ccm-bundle-devel-wildfly/pom.xml +++ b/ccm-bundle-devel-wildfly/pom.xml @@ -180,9 +180,9 @@ generic - - - org.wildfly.plugins + + + org.wildfly.plugins wildfly-maven-plugin @@ -194,8 +194,8 @@ -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8787 - - + + diff --git a/ccm-cms/src/main/java/org/librecms/Cms.java b/ccm-cms/src/main/java/org/librecms/Cms.java index b023bd252..9d5e0212c 100644 --- a/ccm-cms/src/main/java/org/librecms/Cms.java +++ b/ccm-cms/src/main/java/org/librecms/Cms.java @@ -5,7 +5,6 @@ package org.librecms; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.libreccm.categorization.Category; import org.libreccm.core.CoreConstants; import org.libreccm.modules.CcmModule; import org.libreccm.modules.InitEvent; @@ -14,24 +13,36 @@ import org.libreccm.modules.Module; import org.libreccm.modules.RequiredModule; import org.libreccm.modules.ShutdownEvent; import org.libreccm.modules.UnInstallEvent; +import org.libreccm.web.ApplicationType; import org.librecms.contentsection.ContentSection; +import org.librecms.contentsection.ContentSectionCreator; import org.librecms.contentsection.ContentSectionSetup; +import org.librecms.contentsection.ui.admin.ApplicationInstanceForm; +import org.librecms.contentsection.ui.admin.SettingsPane; import java.io.IOException; import java.io.InputStream; import java.util.Properties; -@Module(packageName = "org.libreccm.cms", - requiredModules = { - @RequiredModule(module = org.libreccm.core.CcmCore.class) - } +@Module(//packageName = "org.librecms.cms", + requiredModules = { + @RequiredModule(module = org.libreccm.core.CcmCore.class) + }, + applicationTypes = { + @ApplicationType( + name = CmsConstants.CONTENT_SECTION_APP_TYPE, + applicationClass = ContentSection.class, + instanceForm = ApplicationInstanceForm.class, + settingsPane = SettingsPane.class, + descBundle = CmsConstants.CONTENT_SECTION_DESC_BUNDLE, + creator = ContentSectionCreator.class + ) + } ) public class Cms implements CcmModule { private static final Logger LOGGER = LogManager.getLogger(Cms.class); - - @Override public void install(final InstallEvent event) { //ToDo Create initial data for the module if neccessary @@ -43,7 +54,12 @@ public class Cms implements CcmModule { final Properties integrationProps = new Properties(); try (final InputStream inputStream = getClass().getResourceAsStream( CoreConstants.INTEGRATION_PROPS)) { - integrationProps.load(inputStream); + + if (inputStream == null) { + LOGGER.warn("No integration.properties available."); + } else { + integrationProps.load(inputStream); + } } catch (IOException ex) { LOGGER.warn( "Failed to load integration properties. Using default values.", @@ -67,15 +83,14 @@ public class Cms implements CcmModule { // * Content Reader: View Published Items } - private void createContentSection(final String contentSectionName) { - final ContentSection section = new ContentSection(); - section.setLabel(contentSectionName); - - final Category rootFolder = new Category(); - rootFolder.setName(String.format("%s_root", contentSectionName)); - - } - +// private void createContentSection(final String contentSectionName) { +// final ContentSection section = new ContentSection(); +// section.setLabel(contentSectionName); +// +// final Category rootFolder = new Category(); +// rootFolder.setName(String.format("%s_root", contentSectionName)); +// +// } @Override public void init(final InitEvent event) { //ToDo Add initialisation logic necessary for your module diff --git a/ccm-cms/src/main/java/org/librecms/CmsConstants.java b/ccm-cms/src/main/java/org/librecms/CmsConstants.java index 50669e0ef..5ce53400d 100644 --- a/ccm-cms/src/main/java/org/librecms/CmsConstants.java +++ b/ccm-cms/src/main/java/org/librecms/CmsConstants.java @@ -28,8 +28,11 @@ public class CmsConstants { public static final String DB_SCHEMA = "CCM_CMS"; + public static final String CMS_BUNDLE = "org.librecms.CmsResources"; + public static final String CONTENT_SECTION_APP_TYPE = "org.librecms.contentsection.ContentSection"; public static final String CONTENT_SECTION_SERVLET_PATH = "/templates/servlet/content-section/*"; + public static final String CONTENT_SECTION_DESC_BUNDLE = "org.librecms.contentsection.ContentSectionResources"; public static final String PRIVILEGE_ADMINISTER_CATEGORIES = "administer_categories"; public static final String PRIVILEGE_ADMINISTER_CONTENT_TYPES = "administer_content_types"; diff --git a/ccm-cms/src/main/java/org/librecms/assets/BinaryAsset.java b/ccm-cms/src/main/java/org/librecms/assets/BinaryAsset.java index ea1dd4515..acf245fda 100644 --- a/ccm-cms/src/main/java/org/librecms/assets/BinaryAsset.java +++ b/ccm-cms/src/main/java/org/librecms/assets/BinaryAsset.java @@ -21,6 +21,7 @@ package org.librecms.assets; import java.io.Serializable; import java.util.Arrays; import java.util.Objects; + import javax.activation.MimeType; import javax.persistence.AssociationOverride; import javax.persistence.Column; @@ -30,10 +31,14 @@ import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.Lob; import javax.persistence.Table; + import org.hibernate.envers.Audited; import org.hibernate.validator.constraints.NotEmpty; +import org.libreccm.jpa.utils.MimeTypeConverter; import org.libreccm.l10n.LocalizedString; +import javax.persistence.Convert; + import static org.librecms.CmsConstants.*; /** @@ -64,6 +69,7 @@ public class BinaryAsset extends Asset implements Serializable { private String fileName; @Column(name = "MIME_TYPE", length = 512, nullable = false) + @Convert(converter = MimeTypeConverter.class) @NotEmpty private MimeType mimeType; diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ContentSection.java b/ccm-cms/src/main/java/org/librecms/contentsection/ContentSection.java index 83bb16cae..1b70eca44 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/ContentSection.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/ContentSection.java @@ -18,8 +18,6 @@ */ package org.librecms.contentsection; -import com.arsdigita.ui.admin.applications.DefaultApplicationInstanceForm; -import com.arsdigita.ui.admin.applications.DefaultApplicationSettingsPane; import org.libreccm.categorization.Category; import org.libreccm.security.Role; @@ -40,6 +38,7 @@ import javax.persistence.OneToOne; import javax.persistence.Table; import org.libreccm.web.ApplicationType; +import org.librecms.contentsection.ui.admin.ApplicationInstanceForm; import java.util.ArrayList; @@ -65,12 +64,13 @@ import static org.librecms.CmsConstants.*; + " OR p.object = :rootDocumentsFolder) " + "AND p.grantee = :role") }) -@ApplicationType( - name = CONTENT_SECTION_APP_TYPE, - descBundle = "org.librecms.contentsection.ContentSectionResources", - singleton = false, - creator = ContentSectionCreator.class, - servlet = ContentSectionServlet.class) +//@ApplicationType( +// name = CONTENT_SECTION_APP_TYPE, +// descBundle = "org.librecms.contentsection.ContentSectionResources", +// singleton = false, +// creator = ContentSectionCreator.class, +// servlet = ContentSectionServlet.class, +// instanceForm = ApplicationInstanceForm.class) public class ContentSection extends CcmApplication implements Serializable { private static final long serialVersionUID = -671718122153931727L; diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionManager.java b/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionManager.java index 426bd3952..a120bc189 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionManager.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionManager.java @@ -120,9 +120,9 @@ public class ContentSectionManager { section.setRootDocumentFolder(rootFolder); section.setRootAssetsFolder(rootAssetFolder); - sectionRepo.save(section); categoryRepo.save(rootFolder); categoryRepo.save(rootAssetFolder); + sectionRepo.save(section); addRoleToContentSection(section, ALERT_RECIPIENT); diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionSetup.java b/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionSetup.java index 2e724efea..f197f6d9e 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionSetup.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionSetup.java @@ -24,6 +24,10 @@ import org.libreccm.categorization.Category; import org.libreccm.modules.InstallEvent; import org.libreccm.security.Role; import org.libreccm.web.AbstractCcmApplicationSetup; +import org.librecms.CmsConstants; + +import java.util.Locale; +import java.util.UUID; import static org.librecms.CmsConstants.*; import static org.librecms.contentsection.ContentSection.*; @@ -61,13 +65,21 @@ public class ContentSectionSetup extends AbstractCcmApplicationSetup { private void createContentSection(final String sectionName) { final ContentSection section = new ContentSection(); + section.setUuid(UUID.randomUUID().toString()); + section.setApplicationType(CmsConstants.CONTENT_SECTION_APP_TYPE); + section.setPrimaryUrl(sectionName); + section.setDisplayName(sectionName); section.setLabel(sectionName); final Category rootFolder = new Category(); + rootFolder.setUuid(UUID.randomUUID().toString()); + rootFolder.setUniqueId(rootFolder.getUuid()); rootFolder.setName(String.format("%s_" + ROOT, sectionName)); final Category rootAssetFolder = new Category(); - rootFolder.setName(String.format("%s_" + ASSETS, sectionName)); + rootAssetFolder.setName(String.format("%s_" + ASSETS, sectionName)); + rootAssetFolder.setUuid(UUID.randomUUID().toString()); + rootAssetFolder.setUniqueId(rootAssetFolder.getUuid()); section.setRootDocumentFolder(rootFolder); section.setRootAssetsFolder(rootAssetFolder); diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/ApplicationInstanceForm.java b/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/ApplicationInstanceForm.java new file mode 100644 index 000000000..7f6a35651 --- /dev/null +++ b/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/ApplicationInstanceForm.java @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2016 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package org.librecms.contentsection.ui.admin; + +import com.arsdigita.bebop.FormData; +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.ParameterSingleSelectionModel; +import com.arsdigita.bebop.event.FormProcessListener; +import com.arsdigita.bebop.event.FormSectionEvent; +import com.arsdigita.ui.admin.applications.DefaultApplicationInstanceForm; + +import org.libreccm.cdi.utils.CdiUtil; +import org.librecms.contentsection.ContentSectionManager; + +/** + * + * @author Jens Pelzetter + */ +public class ApplicationInstanceForm extends DefaultApplicationInstanceForm { + + public ApplicationInstanceForm( + final String name, + final ParameterSingleSelectionModel selectedAppType, + final ParameterSingleSelectionModel selectedAppInstance) { + + super(name, selectedAppType, selectedAppInstance); + } + + @Override + protected FormProcessListener createProcessListener() { + return (FormSectionEvent e) -> { + final PageState state = e.getPageState(); + if (getSaveCancelSection().getSaveButton().isSelected(state)) { + final FormData data = e.getFormData(); + + final String primaryUrlData = data.getString( + "new_instance_primary_url"); + + final ContentSectionManager manager = CdiUtil.createCdiUtil() + .findBean(ContentSectionManager.class); + + manager.createContentSection(primaryUrlData); + } + }; + } + +} diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/SettingsPane.java b/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/SettingsPane.java new file mode 100644 index 000000000..07e6e6be9 --- /dev/null +++ b/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/SettingsPane.java @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2016 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package org.librecms.contentsection.ui.admin; + +import com.arsdigita.bebop.ActionLink; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.Link; +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.ParameterSingleSelectionModel; +import com.arsdigita.globalization.GlobalizedMessage; +import com.arsdigita.ui.admin.applications.AbstractAppSettingsPane; +import com.arsdigita.web.RedirectSignal; +import com.arsdigita.web.URL; + +import org.librecms.CmsConstants; + +/** + * + * @author Jens Pelzetter + */ +public class SettingsPane extends AbstractAppSettingsPane { + + public SettingsPane( + final ParameterSingleSelectionModel selectedAppType, + final ParameterSingleSelectionModel selectedAppInstance) { + super(selectedAppType, selectedAppInstance); + } + + @Override + protected void createWidgets() { + final Label label = new Label(new GlobalizedMessage( + "contentsection.ui.admin.app_note", CmsConstants.CMS_BUNDLE)); + add(label); + + final ActionLink link = new ActionLink(new GlobalizedMessage( + "contentsection.ui.admin.link_app", CmsConstants.CMS_BUNDLE)); + link.addActionListener(e -> { + final PageState state = e.getPageState(); + final String primaryUrl; + if (getSelectedAppInstance(state).get().getPrimaryUrl().startsWith( + "/")) { + primaryUrl = getSelectedAppInstance(state).get().getPrimaryUrl(); + } else { + primaryUrl = String.format( + "/%s", + getSelectedAppInstance(state).get().getPrimaryUrl()); + } + throw new RedirectSignal( + URL.there(state.getRequest(), primaryUrl, null), + false); + }); + add(link); + + } + +} diff --git a/ccm-cms/src/main/resources/db/migrations/org/librecms/cms/h2/V7_0_0_0__create_tables.sql b/ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/h2/V7_0_0_0__create_tables.sql similarity index 73% rename from ccm-cms/src/main/resources/db/migrations/org/librecms/cms/h2/V7_0_0_0__create_tables.sql rename to ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/h2/V7_0_0_0__create_tables.sql index 9e2e1164b..8a0e042c2 100644 --- a/ccm-cms/src/main/resources/db/migrations/org/librecms/cms/h2/V7_0_0_0__create_tables.sql +++ b/ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/h2/V7_0_0_0__create_tables.sql @@ -162,7 +162,7 @@ create table CCM_CMS.BINARY_ASSETS ( ASSET_DATA blob, FILENAME varchar(512) not null, - MIME_TYPE binary(512) not null, + MIME_TYPE varchar(512) not null, DATA_SIZE bigint, ASSET_ID bigint not null, primary key (ASSET_ID) @@ -173,7 +173,7 @@ REV integer not null, ASSET_DATA blob, FILENAME varchar(512), - MIME_TYPE binary(512), + MIME_TYPE varchar(512), DATA_SIZE bigint, primary key (ASSET_ID, REV) ); @@ -278,6 +278,11 @@ primary key (OBJECT_ID, REV) ); + create table CCM_CMS.CONTENT_SECTION_ROLES ( + SECTION_ID bigint not null, + ROLE_ID bigint not null + ); + create table CCM_CMS.CONTENT_SECTIONS ( DEFAULT_LOCALE varchar(255), ITEM_RESOLVER_CLASS varchar(1024), @@ -288,8 +293,6 @@ OBJECT_ID bigint not null, ROOT_ASSETS_FOLDER_ID bigint, ROOT_DOCUMENTS_FOLDER_ID bigint, - STAFF_ROLE_ID bigint, - VIEWERS_ROLE_ID bigint, primary key (OBJECT_ID) ); @@ -1071,6 +1074,16 @@ foreign key (OBJECT_ID, REV) references CCM_CORE.CCM_OBJECTS_AUD; + alter table CCM_CMS.CONTENT_SECTION_ROLES + add constraint FKkn5nygbmub9wd5lxw3402t82d + foreign key (ROLE_ID) + references CCM_CORE.CCM_ROLES; + + alter table CCM_CMS.CONTENT_SECTION_ROLES + add constraint FKgcn76piocmkmvl3b0omv9vkv9 + foreign key (SECTION_ID) + references CCM_CMS.CONTENT_SECTIONS; + alter table CCM_CMS.CONTENT_SECTIONS add constraint FKajweudfxaf7g2ydr2hcgqwcib foreign key (ROOT_ASSETS_FOLDER_ID) @@ -1081,16 +1094,6 @@ foreign key (ROOT_DOCUMENTS_FOLDER_ID) references CCM_CORE.CATEGORIES; - alter table CCM_CMS.CONTENT_SECTIONS - add constraint FKqb579yjmmqbergn0qv68a4rqb - foreign key (STAFF_ROLE_ID) - references CCM_CORE.CCM_ROLES; - - alter table CCM_CMS.CONTENT_SECTIONS - add constraint FKjntqpyi3g4bx97ive5x8aipyi - foreign key (VIEWERS_ROLE_ID) - references CCM_CORE.CCM_ROLES; - alter table CCM_CMS.CONTENT_SECTIONS add constraint FK72jh0axiiru87i61mppvaiv96 foreign key (OBJECT_ID) @@ -1556,3 +1559,492 @@ foreign key (TASK_ID) references CCM_CORE.WORKFLOW_USER_TASKS; + alter table CCM_CORE.APPLICATIONS + add constraint FKatcp9ij6mbkx0nfeig1o6n3lm + foreign key (OBJECT_ID) + references CCM_CORE.RESOURCES; + + alter table CCM_CORE.ATTACHMENTS + add constraint FK8ju9hm9baceridp803nislkwb + foreign key (MESSAGE_ID) + references CCM_CORE.MESSAGES; + + alter table CCM_CORE.CATEGORIES + add constraint FKrj3marx99nheur4fqanm0ylur + foreign key (PARENT_CATEGORY_ID) + references CCM_CORE.CATEGORIES; + + alter table CCM_CORE.CATEGORIES + add constraint FKpm291swli2musd0204phta652 + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.CATEGORIZATIONS + add constraint FKejp0ubk034nfq60v1po6srkke + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.CATEGORIZATIONS + add constraint FKoyeipswl876wa6mqwbx0uy83h + foreign key (CATEGORY_ID) + references CCM_CORE.CATEGORIES; + + alter table CCM_CORE.CATEGORY_DESCRIPTIONS + add constraint FKhiwjlmh5vkbu3v3vng1la1qum + foreign key (OBJECT_ID) + references CCM_CORE.CATEGORIES; + + alter table CCM_CORE.CATEGORY_DOMAINS + add constraint FKf25vi73cji01w8fgo6ow1dgg + foreign key (ROOT_CATEGORY_ID) + references CCM_CORE.CATEGORIES; + + alter table CCM_CORE.CATEGORY_DOMAINS + add constraint FK58xpmnvciohkom1c16oua4xha + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.CATEGORY_TITLES + add constraint FKka9bt9f5br0kji5bcjxcmf6ch + foreign key (OBJECT_ID) + references CCM_CORE.CATEGORIES; + + alter table CCM_CORE.CCM_OBJECTS_AUD + add constraint FKr00eauutiyvocno8ckx6h9nw6 + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CORE.CCM_OBJECTS_AUD + add constraint FKo5s37ctcdny7tmewjwv7705h5 + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CORE.DIGESTS + add constraint FKc53g09agnye3w1v4euy3e0gsi + foreign key (FROM_PARTY_ID) + references CCM_CORE.PARTIES; + + alter table CCM_CORE.DIGESTS + add constraint FK845r9ep6xu6nbt1mvxulwybym + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.DOMAIN_DESCRIPTIONS + add constraint FKn4i2dxgn8cqysa62dds6eih6a + foreign key (OBJECT_ID) + references CCM_CORE.CATEGORY_DOMAINS; + + alter table CCM_CORE.DOMAIN_OWNERSHIPS + add constraint FK47nsasr7jrdwlky5gx0u6e9py + foreign key (domain_OBJECT_ID) + references CCM_CORE.CATEGORY_DOMAINS; + + alter table CCM_CORE.DOMAIN_OWNERSHIPS + add constraint FK3u4hq6yqau4m419b1xva3xpwq + foreign key (owner_OBJECT_ID) + references CCM_CORE.APPLICATIONS; + + alter table CCM_CORE.DOMAIN_TITLES + add constraint FK5p526dsdwn94els6lp5w0hdn4 + foreign key (OBJECT_ID) + references CCM_CORE.CATEGORY_DOMAINS; + + alter table CCM_CORE.FORMBUILDER_COMPONENT_DESCRIPTIONS + add constraint FKfh0k9lj3pf4amfc9bbbss0tr1 + foreign key (COMPONENT_ID) + references CCM_CORE.FORMBUILDER_COMPONENTS; + + alter table CCM_CORE.FORMBUILDER_COMPONENTS + add constraint FKpcpmvyiix023b4g5n4q8nkfca + foreign key (parentComponent_OBJECT_ID) + references CCM_CORE.FORMBUILDER_COMPONENTS; + + alter table CCM_CORE.FORMBUILDER_COMPONENTS + add constraint FKt0e0uv00pp1rwhyaltrytghnm + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.FORMBUILDER_CONFIRM_EMAIL_LISTENER + add constraint FK48khrbud3xhi2gvsvnlttd8tg + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_PROCESS_LISTENERS; + + alter table CCM_CORE.FORMBUILDER_CONFIRM_REDIRECT_LISTENERS + add constraint FKbyjjt2ufendvje2obtge2l7et + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_PROCESS_LISTENERS; + + alter table CCM_CORE.FORMBUILDER_DATA_DRIVEN_SELECTS + add constraint FK8oriyta1957u7dvbrqk717944 + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_WIDGETS; + + alter table CCM_CORE.FORMBUILDER_DATA_QUERIES + add constraint FKhhaxpeddbtmrnjr5o0fopju3a + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.FORMBUILDER_DATA_QUERY_DESCRIPTIONS + add constraint FKsmduu1opoiulkeo2gc8v7lsbn + foreign key (DATA_QUERY_ID) + references CCM_CORE.FORMBUILDER_DATA_QUERIES; + + alter table CCM_CORE.FORMBUILDER_DATA_QUERY_NAMES + add constraint FKju1x82inrw3kguyjuxoetn6gn + foreign key (DATA_QUERY_ID) + references CCM_CORE.FORMBUILDER_DATA_QUERIES; + + alter table CCM_CORE.FORMBUILDER_FORMSECTIONS + add constraint FKnfhsgxp4lvigq2pm33pn4afac + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_COMPONENTS; + + alter table CCM_CORE.FORMBUILDER_LISTENERS + add constraint FK33ilyirwoux28yowafgd5xx0o + foreign key (widget_OBJECT_ID) + references CCM_CORE.FORMBUILDER_WIDGETS; + + alter table CCM_CORE.FORMBUILDER_LISTENERS + add constraint FKlqm76746nq5yrt8ganm474uu0 + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.FORMBUILDER_METAOBJECTS + add constraint FKf963v6u9mw8pwjmasrw51w8dx + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.FORMBUILDER_OBJECT_TYPES + add constraint FKkv337e83rsecf0h3qy8bu7l9w + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.FORMBUILDER_OPTION_LABELS + add constraint FKatlsylsvln6yse55eof6wwkj6 + foreign key (OPTION_ID) + references CCM_CORE.FORMBUILDER_OPTIONS; + + alter table CCM_CORE.FORMBUILDER_OPTIONS + add constraint FKhe5q71wby9g4i56sotc501h11 + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_COMPONENTS; + + alter table CCM_CORE.FORMBUILDER_PROCESS_LISTENER_DESCRIPTIONS + add constraint FKcv3iu04gxjk9c0pn6tl8rqqv3 + foreign key (PROCESS_LISTENER_ID) + references CCM_CORE.FORMBUILDER_PROCESS_LISTENERS; + + alter table CCM_CORE.FORMBUILDER_PROCESS_LISTENER_NAMES + add constraint FK8rnyb1m6ij3b9hhmhr7klgd4p + foreign key (PROCESS_LISTENER_ID) + references CCM_CORE.FORMBUILDER_PROCESS_LISTENERS; + + alter table CCM_CORE.FORMBUILDER_PROCESS_LISTENERS + add constraint FK7uiaeax8qafm82e5k729ms5ku + foreign key (formSection_OBJECT_ID) + references CCM_CORE.FORMBUILDER_FORMSECTIONS; + + alter table CCM_CORE.FORMBUILDER_PROCESS_LISTENERS + add constraint FKbdnloo884qk6gn36jwiqv5rlp + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.FORMBUILDER_REMOTE_SERVER_POST_LISTENER + add constraint FKpajvu9m6fj1enm67a9gcb5ii9 + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_PROCESS_LISTENERS; + + alter table CCM_CORE.FORMBUILDER_SIMPLE_EMAIL_LISTENERS + add constraint FKsn82ktlq0c9ikijyv8k2bfv4f + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_PROCESS_LISTENERS; + + alter table CCM_CORE.FORMBUILDER_TEMPLATE_EMAIL_LISTENERS + add constraint FK8kjyu72btjsuaaqh4bvd8npns + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_PROCESS_LISTENERS; + + alter table CCM_CORE.FORMBUILDER_WIDGET_LABELS + add constraint FKb1q9bfshcrkwlj7r8w5jb4y8l + foreign key (widget_OBJECT_ID) + references CCM_CORE.FORMBUILDER_WIDGETS; + + alter table CCM_CORE.FORMBUILDER_WIDGET_LABELS + add constraint FKm1huo6ghk9l5o8buku9v8y6q7 + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_COMPONENTS; + + alter table CCM_CORE.FORMBUILDER_WIDGETS + add constraint FKs7qq6vxblhmq0rlf87re65jdp + foreign key (label_OBJECT_ID) + references CCM_CORE.FORMBUILDER_WIDGET_LABELS; + + alter table CCM_CORE.FORMBUILDER_WIDGETS + add constraint FK1wosr4ujbfckdc50u5fgmrhrk + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_COMPONENTS; + + alter table CCM_CORE.FORMBUILDER_XML_EMAIL_LISTENERS + add constraint FKjie9co03m7ow4ihig5rk7l8oj + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_PROCESS_LISTENERS; + + alter table CCM_CORE.GROUP_MEMBERSHIPS + add constraint FKq4qnny8ri3eo7eqh4olxco8nk + foreign key (GROUP_ID) + references CCM_CORE.GROUPS; + + alter table CCM_CORE.GROUP_MEMBERSHIPS + add constraint FKc8u86ivkhvoiw6ju8b2p365he + foreign key (MEMBER_ID) + references CCM_CORE.USERS; + + alter table CCM_CORE.GROUPS + add constraint FK4f61mlqxw0ct6s7wwpi9m0735 + foreign key (PARTY_ID) + references CCM_CORE.PARTIES; + + alter table CCM_CORE.INITS + add constraint FK3nvvxk10nmq9nfuko8yklqdgc + foreign key (REQUIRED_BY_ID) + references CCM_CORE.INITS; + + alter table CCM_CORE.LUCENE_DOCUMENTS + add constraint FK942kl4yff8rdiwr0pjk2a9g8 + foreign key (CREATED_BY_PARTY_ID) + references CCM_CORE.USERS; + + alter table CCM_CORE.LUCENE_DOCUMENTS + add constraint FKc5rs6afx4p9fidabfqsxr5ble + foreign key (LAST_MODIFIED_BY) + references CCM_CORE.USERS; + + alter table CCM_CORE.LUCENE_INDEXES + add constraint FK6gu0yrlviqk07dtb3r02iw43f + foreign key (HOST_ID) + references CCM_CORE.HOSTS; + + alter table CCM_CORE.MESSAGES + add constraint FKph10aehmg9f20pn2w4buki97q + foreign key (IN_REPLY_TO_ID) + references CCM_CORE.MESSAGES; + + alter table CCM_CORE.MESSAGES + add constraint FKjufsx3c3h538fj35h8hgfnb1p + foreign key (SENDER_ID) + references CCM_CORE.USERS; + + alter table CCM_CORE.MESSAGES + add constraint FK6w20ao7scwecd9mfwpun2ddqx + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.NOTIFICATIONS + add constraint FKqk70c1x1dklhty9ju5t4wukd9 + foreign key (DIGEST_ID) + references CCM_CORE.DIGESTS; + + alter table CCM_CORE.NOTIFICATIONS + add constraint FKtt4fjr2p75og79jxxgd8q8mr + foreign key (MESSAGE_ID) + references CCM_CORE.MESSAGES; + + alter table CCM_CORE.NOTIFICATIONS + add constraint FK2vlnma0ox43j0clx8ead08n5s + foreign key (RECEIVER_ID) + references CCM_CORE.PARTIES; + + alter table CCM_CORE.NOTIFICATIONS + add constraint FKf423hhiaw1bexpxeh1pnas7qt + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.ONE_TIME_AUTH_TOKENS + add constraint FKtplfuphkiorfkttaewb4wmfjc + foreign key (USER_ID) + references CCM_CORE.USERS; + + alter table CCM_CORE.PERMISSIONS + add constraint FKj9di7pawxgtouxmu2k44bj5c4 + foreign key (CREATION_USER_ID) + references CCM_CORE.USERS; + + alter table CCM_CORE.PERMISSIONS + add constraint FKikx3x0kn9fito23g50v6xbr9f + foreign key (GRANTEE_ID) + references CCM_CORE.CCM_ROLES; + + alter table CCM_CORE.PERMISSIONS + add constraint FKkamckexjnffnt8lay9nqeawhm + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.PORTALS + add constraint FK5a2hdrbw03mmgr74vj5nxlpvk + foreign key (OBJECT_ID) + references CCM_CORE.RESOURCES; + + alter table CCM_CORE.PORTLETS + add constraint FK9gr5xjt3rx4uhtw7vl6adruol + foreign key (PORTAL_ID) + references CCM_CORE.PORTALS; + + alter table CCM_CORE.PORTLETS + add constraint FKjmx9uebt0gwxkw3xv34niy35f + foreign key (OBJECT_ID) + references CCM_CORE.RESOURCES; + + alter table CCM_CORE.QUEUE_ITEMS + add constraint FKtgkwfruv9kjdybf46l02da088 + foreign key (MESSAGE_ID) + references CCM_CORE.MESSAGES; + + alter table CCM_CORE.QUEUE_ITEMS + add constraint FKs9aq1hyxstwmvx7fmfifp4x7r + foreign key (RECEIVER_ID) + references CCM_CORE.PARTIES; + + alter table CCM_CORE.RESOURCE_DESCRIPTIONS + add constraint FKk9arvj5u21rv23ce3cav4opqx + foreign key (OBJECT_ID) + references CCM_CORE.RESOURCES; + + alter table CCM_CORE.RESOURCE_TITLES + add constraint FKto4p6n2wklljyf7tmuxtmyfe0 + foreign key (OBJECT_ID) + references CCM_CORE.RESOURCES; + + alter table CCM_CORE.RESOURCE_TYPE_DESCRIPTIONS + add constraint FKckpihjtv23iahbg3imnpbsr2 + foreign key (RESOURCE_TYPE_ID) + references CCM_CORE.RESOURCE_TYPES; + + alter table CCM_CORE.RESOURCES + add constraint FKbo7ibfgodicn9flv2gfo11g5a + foreign key (parent_OBJECT_ID) + references CCM_CORE.RESOURCES; + + alter table CCM_CORE.RESOURCES + add constraint FK262fbwetpjx3k4uuvw24wsiv + foreign key (resourceType_RESOURCE_TYPE_ID) + references CCM_CORE.RESOURCE_TYPES; + + alter table CCM_CORE.RESOURCES + add constraint FKbjdf8pm4frth8r06ev2qjm88f + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.ROLE_MEMBERSHIPS + add constraint FK9m88ywi7rcin7b7jrgh53emrq + foreign key (MEMBER_ID) + references CCM_CORE.PARTIES; + + alter table CCM_CORE.ROLE_MEMBERSHIPS + add constraint FKcsyogv5m2rgsrmtgnhgkjhfw7 + foreign key (ROLE_ID) + references CCM_CORE.CCM_ROLES; + + alter table CCM_CORE.SETTINGS_ENUM_VALUES + add constraint FK8mw4p92s0h3h8bmo8saowu32i + foreign key (ENUM_ID) + references CCM_CORE.SETTINGS; + + alter table CCM_CORE.SETTINGS_L10N_STR_VALUES + add constraint FK5knjq7cisej0qfx5dw1y93rou + foreign key (ENTRY_ID) + references CCM_CORE.SETTINGS; + + alter table CCM_CORE.SETTINGS_STRING_LIST + add constraint FKqeclqa5sf1g53vxs857tpwrus + foreign key (LIST_ID) + references CCM_CORE.SETTINGS; + + alter table CCM_CORE.TASK_ASSIGNMENTS + add constraint FKe29uwmvxdmol1fjob3auej4qv + foreign key (ROLE_ID) + references CCM_CORE.CCM_ROLES; + + alter table CCM_CORE.TASK_ASSIGNMENTS + add constraint FKc1vovbjg9mp5yegx2fdoutx7u + foreign key (TASK_ID) + references CCM_CORE.WORKFLOW_USER_TASKS; + + alter table CCM_CORE.THREADS + add constraint FKsx08mpwvwnw97uwdgjs76q39g + foreign key (ROOT_ID) + references CCM_CORE.MESSAGES; + + alter table CCM_CORE.THREADS + add constraint FKp97b1sy1kop07rtapeh5l9fb2 + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.USER_EMAIL_ADDRESSES + add constraint FKr900l79erul95seyyccf04ufc + foreign key (USER_ID) + references CCM_CORE.USERS; + + alter table CCM_CORE.USERS + add constraint FKosh928q71aonu6l1kurb417r + foreign key (PARTY_ID) + references CCM_CORE.PARTIES; + + alter table CCM_CORE.WORKFLOW_DESCRIPTIONS + add constraint FKgx7upkqky82dpxvbs95imfl9l + foreign key (WORKFLOW_ID) + references CCM_CORE.WORKFLOWS; + + alter table CCM_CORE.WORKFLOW_NAMES + add constraint FKkxedy9p48avfk45r0bn4uc09i + foreign key (WORKFLOW_ID) + references CCM_CORE.WORKFLOWS; + + alter table CCM_CORE.WORKFLOW_TASK_COMMENTS + add constraint FKkfqrf9jdvm7livu5if06w0r5t + foreign key (TASK_ID) + references CCM_CORE.WORKFLOW_TASKS; + + alter table CCM_CORE.WORKFLOW_TASK_DEPENDENCIES + add constraint FK1htp420ki24jaswtcum56iawe + foreign key (DEPENDENT_TASK_ID) + references CCM_CORE.WORKFLOW_TASKS; + + alter table CCM_CORE.WORKFLOW_TASK_DEPENDENCIES + add constraint FK8rbggnp4yjpab8quvvx800ymy + foreign key (DEPENDS_ON_TASK_ID) + references CCM_CORE.WORKFLOW_TASKS; + + alter table CCM_CORE.WORKFLOW_TASK_LABELS + add constraint FKf715qud6g9xv2xeb8rrpnv4xs + foreign key (TASK_ID) + references CCM_CORE.WORKFLOW_TASKS; + + alter table CCM_CORE.WORKFLOW_TASKS + add constraint FK1693cbc36e4d8gucg8q7sc57e + foreign key (WORKFLOW_ID) + references CCM_CORE.WORKFLOWS; + + alter table CCM_CORE.WORKFLOW_TASKS_DESCRIPTIONS + add constraint FK2s2498d2tpojjrtghq7iyaosv + foreign key (TASK_ID) + references CCM_CORE.WORKFLOW_TASKS; + + alter table CCM_CORE.WORKFLOW_TEMPLATES + add constraint FK8692vdme4yxnkj1m0k1dw74pk + foreign key (WORKFLOW_ID) + references CCM_CORE.WORKFLOWS; + + alter table CCM_CORE.WORKFLOW_USER_TASKS + add constraint FKf09depwj5rgso2dair07vnu33 + foreign key (LOCKING_USER_ID) + references CCM_CORE.USERS; + + alter table CCM_CORE.WORKFLOW_USER_TASKS + add constraint FK6evo9y34awhdfcyl8gv78qb7f + foreign key (NOTIFICATION_SENDER) + references CCM_CORE.USERS; + + alter table CCM_CORE.WORKFLOW_USER_TASKS + add constraint FKefpdf9ojplu7loo31hfm0wl2h + foreign key (TASK_ID) + references CCM_CORE.WORKFLOW_TASKS; \ No newline at end of file diff --git a/ccm-cms/src/main/resources/db/migrations/org/librecms/cms/pgsql/V7_0_0_0__create_tables.sql b/ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/pgsql/V7_0_0_0__create_tables.sql similarity index 98% rename from ccm-cms/src/main/resources/db/migrations/org/librecms/cms/pgsql/V7_0_0_0__create_tables.sql rename to ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/pgsql/V7_0_0_0__create_tables.sql index 1cb0baece..9c1258a28 100644 --- a/ccm-cms/src/main/resources/db/migrations/org/librecms/cms/pgsql/V7_0_0_0__create_tables.sql +++ b/ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/pgsql/V7_0_0_0__create_tables.sql @@ -163,7 +163,7 @@ create table CCM_CMS.BINARY_ASSETS ( ASSET_DATA oid, FILENAME varchar(512) not null, - MIME_TYPE bytea not null, + MIME_TYPE varchar(512) not null, DATA_SIZE int8, ASSET_ID int8 not null, primary key (ASSET_ID) @@ -174,7 +174,7 @@ REV int4 not null, ASSET_DATA oid, FILENAME varchar(512), - MIME_TYPE bytea, + MIME_TYPE varchar(512), DATA_SIZE int8, primary key (ASSET_ID, REV) ); @@ -279,6 +279,11 @@ primary key (OBJECT_ID, REV) ); + create table CCM_CMS.CONTENT_SECTION_ROLES ( + SECTION_ID int8 not null, + ROLE_ID int8 not null + ); + create table CCM_CMS.CONTENT_SECTIONS ( DEFAULT_LOCALE varchar(255), ITEM_RESOLVER_CLASS varchar(1024), @@ -289,8 +294,6 @@ OBJECT_ID int8 not null, ROOT_ASSETS_FOLDER_ID int8, ROOT_DOCUMENTS_FOLDER_ID int8, - STAFF_ROLE_ID int8, - VIEWERS_ROLE_ID int8, primary key (OBJECT_ID) ); @@ -1072,6 +1075,16 @@ foreign key (OBJECT_ID, REV) references CCM_CORE.CCM_OBJECTS_AUD; + alter table CCM_CMS.CONTENT_SECTION_ROLES + add constraint FKkn5nygbmub9wd5lxw3402t82d + foreign key (ROLE_ID) + references CCM_CORE.CCM_ROLES; + + alter table CCM_CMS.CONTENT_SECTION_ROLES + add constraint FKgcn76piocmkmvl3b0omv9vkv9 + foreign key (SECTION_ID) + references CCM_CMS.CONTENT_SECTIONS; + alter table CCM_CMS.CONTENT_SECTIONS add constraint FKajweudfxaf7g2ydr2hcgqwcib foreign key (ROOT_ASSETS_FOLDER_ID) @@ -1082,16 +1095,6 @@ foreign key (ROOT_DOCUMENTS_FOLDER_ID) references CCM_CORE.CATEGORIES; - alter table CCM_CMS.CONTENT_SECTIONS - add constraint FKqb579yjmmqbergn0qv68a4rqb - foreign key (STAFF_ROLE_ID) - references CCM_CORE.CCM_ROLES; - - alter table CCM_CMS.CONTENT_SECTIONS - add constraint FKjntqpyi3g4bx97ive5x8aipyi - foreign key (VIEWERS_ROLE_ID) - references CCM_CORE.CCM_ROLES; - alter table CCM_CMS.CONTENT_SECTIONS add constraint FK72jh0axiiru87i61mppvaiv96 foreign key (OBJECT_ID) @@ -1555,4 +1558,4 @@ alter table CCM_CMS.WORKFLOW_TASKS add constraint FKge2x94m1y9tr7mk26ensyn674 foreign key (TASK_ID) - references CCM_CORE.WORKFLOW_USER_TASKS; + references CCM_CORE.WORKFLOW_USER_TASKS; \ No newline at end of file diff --git a/ccm-cms/src/main/resources/module-info/org.librecms.ccm-cms.properties b/ccm-cms/src/main/resources/module-info/org.librecms.Cms.properties similarity index 100% rename from ccm-cms/src/main/resources/module-info/org.librecms.ccm-cms.properties rename to ccm-cms/src/main/resources/module-info/org.librecms.Cms.properties diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties new file mode 100644 index 000000000..eb7b0211d --- /dev/null +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties @@ -0,0 +1,3 @@ + +contentsection.ui.admin.app_note=The properties for a Content Section are managed a special application: +contentsection.ui.admin.link_app=Go to Content Section application diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties new file mode 100644 index 000000000..134c86c15 --- /dev/null +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties @@ -0,0 +1,3 @@ + +contentsection.ui.admin.app_note=Die Verwaltung von Content Sections erfolgt \u00fcber eine eigene Application: +contentsection.ui.admin.link_app=Zur Content Section Applikation diff --git a/ccm-cms/src/main/resources/org/librecms/contentsection/ContentSectionResources_de.properties b/ccm-cms/src/main/resources/org/librecms/contentsection/ContentSectionResources_de.properties index c1617c216..1c197ca17 100644 --- a/ccm-cms/src/main/resources/org/librecms/contentsection/ContentSectionResources_de.properties +++ b/ccm-cms/src/main/resources/org/librecms/contentsection/ContentSectionResources_de.properties @@ -15,5 +15,5 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA -application_title=Inhaltssektion +application_title=Content Section application_desc=A content section is used to group similar content. diff --git a/ccm-cms/src/test/resources/datasets/create_ccm_cms_schema.sql b/ccm-cms/src/test/resources/datasets/create_ccm_cms_schema.sql new file mode 100644 index 000000000..28493fcc8 --- /dev/null +++ b/ccm-cms/src/test/resources/datasets/create_ccm_cms_schema.sql @@ -0,0 +1,2687 @@ +DROP SCHEMA IF EXISTS ccm_cms; +DROP SCHEMA IF EXISTS ccm_core; + +DROP SEQUENCE IF EXISTS hibernate_sequence; + +CREATE SCHEMA ccm_core; +CREATE SCHEMA ccm_cms; + + create table CCM_CMS.ARTICLE_LEADS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.ARTICLE_TEXTS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.ARTICLE_TEXTS_AUD ( + REV integer not null, + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.ARTICLES ( + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CMS.ARTICLES_AUD ( + OBJECT_ID bigint not null, + REV integer not null, + primary key (OBJECT_ID, REV) + ); + + create table CCM_CMS.ASSET_TITLES ( + ASSET_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (ASSET_ID, LOCALE) + ); + + create table CCM_CMS.ASSET_TITLES_AUD ( + REV integer not null, + ASSET_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, ASSET_ID, LOCALE) + ); + + create table CCM_CMS.ASSETS ( + ASSET_ID bigint not null, + UUID varchar(255), + primary key (ASSET_ID) + ); + + create table CCM_CMS.ASSETS_AUD ( + ASSET_ID bigint not null, + REV integer not null, + REVTYPE tinyint, + REVEND integer, + UUID varchar(255), + primary key (ASSET_ID, REV) + ); + + create table CCM_CMS.ATTACHMENT_LIST_CAPTIONS ( + LIST_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (LIST_ID, LOCALE) + ); + + create table CCM_CMS.ATTACHMENT_LIST_CAPTIONS_AUD ( + REV integer not null, + LIST_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, LIST_ID, LOCALE) + ); + + create table CCM_CMS.ATTACHMENT_LISTS ( + LIST_ID bigint not null, + ASSET_TYPE varchar(1024), + UUID varchar(255), + CONTENT_ITEM_ID bigint, + primary key (LIST_ID) + ); + + create table CCM_CMS.ATTACHMENT_LISTS_AUD ( + LIST_ID bigint not null, + REV integer not null, + REVTYPE tinyint, + REVEND integer, + ASSET_TYPE varchar(1024), + UUID varchar(255), + primary key (LIST_ID, REV) + ); + + create table CCM_CMS.AttachmentList_ItemAttachment_AUD ( + REV integer not null, + LIST_ID bigint not null, + ATTACHMENT_ID bigint not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, LIST_ID, ATTACHMENT_ID) + ); + + create table CCM_CMS.ATTACHMENTS ( + ATTACHMENT_ID bigint not null, + SORT_KEY bigint, + uuid varchar(255), + ASSET_ID bigint, + LIST_ID bigint, + primary key (ATTACHMENT_ID) + ); + + create table CCM_CMS.ATTACHMENTS_AUD ( + ATTACHMENT_ID bigint not null, + REV integer not null, + REVTYPE tinyint, + REVEND integer, + SORT_KEY bigint, + uuid varchar(255), + ASSET_ID bigint, + primary key (ATTACHMENT_ID, REV) + ); + + create table CCM_CMS.AUDIO_ASSETS ( + ASSET_ID bigint not null, + LEGAL_METADATA_ID bigint, + primary key (ASSET_ID) + ); + + create table CCM_CMS.AUDIO_ASSETS_AUD ( + ASSET_ID bigint not null, + REV integer not null, + LEGAL_METADATA_ID bigint, + primary key (ASSET_ID, REV) + ); + + create table CCM_CMS.BINARY_ASSET_DESCRIPTIONS ( + ASSET_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (ASSET_ID, LOCALE) + ); + + create table CCM_CMS.BINARY_ASSET_DESCRIPTIONS_AUD ( + REV integer not null, + ASSET_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, ASSET_ID, LOCALE) + ); + + create table CCM_CMS.BINARY_ASSETS ( + ASSET_DATA blob, + FILENAME varchar(512) not null, + MIME_TYPE binary(512) not null, + DATA_SIZE bigint, + ASSET_ID bigint not null, + primary key (ASSET_ID) + ); + + create table CCM_CMS.BINARY_ASSETS_AUD ( + ASSET_ID bigint not null, + REV integer not null, + ASSET_DATA blob, + FILENAME varchar(512), + MIME_TYPE binary(512), + DATA_SIZE bigint, + primary key (ASSET_ID, REV) + ); + + create table CCM_CMS.BOOKMARK_DESCRIPTIONS ( + ASSET_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (ASSET_ID, LOCALE) + ); + + create table CCM_CMS.BOOKMARK_DESCRIPTIONS_AUD ( + REV integer not null, + ASSET_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, ASSET_ID, LOCALE) + ); + + create table CCM_CMS.BOOKMARKS ( + URL varchar(2048) not null, + ASSET_ID bigint not null, + primary key (ASSET_ID) + ); + + create table CCM_CMS.BOOKMARKS_AUD ( + ASSET_ID bigint not null, + REV integer not null, + URL varchar(2048), + primary key (ASSET_ID, REV) + ); + + create table CCM_CMS.CONTENT_ITEM_DESCRIPTIONS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.CONTENT_ITEM_DESCRIPTIONS_AUD ( + REV integer not null, + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.CONTENT_ITEM_NAMES ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.CONTENT_ITEM_NAMES_AUD ( + REV integer not null, + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.CONTENT_ITEM_TITLES ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.CONTENT_ITEM_TITLES_AUD ( + REV integer not null, + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.CONTENT_ITEMS ( + ANCESTORS varchar(1024), + launchDate date, + version varchar(255), + OBJECT_ID bigint not null, + contentType_OBJECT_ID bigint, + primary key (OBJECT_ID) + ); + + create table CCM_CMS.CONTENT_ITEMS_AUD ( + OBJECT_ID bigint not null, + REV integer not null, + ANCESTORS varchar(1024), + launchDate date, + version varchar(255), + contentType_OBJECT_ID bigint, + primary key (OBJECT_ID, REV) + ); + + create table CCM_CMS.CONTENT_SECTION_ROLES ( + SECTION_ID bigint not null, + ROLE_ID bigint not null + ); + + create table CCM_CMS.CONTENT_SECTIONS ( + DEFAULT_LOCALE varchar(255), + ITEM_RESOLVER_CLASS varchar(1024), + LABEL varchar(512), + PAGE_RESOLVER_CLASS varchar(1024), + TEMPLATE_RESOLVER_CLASS varchar(1024), + XML_GENERATOR_CLASS varchar(1024), + OBJECT_ID bigint not null, + ROOT_ASSETS_FOLDER_ID bigint, + ROOT_DOCUMENTS_FOLDER_ID bigint, + primary key (OBJECT_ID) + ); + + create table CCM_CMS.CONTENT_TYPE_DESCRIPTIONS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.CONTENT_TYPE_LABELS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.CONTENT_TYPES ( + ANCESTORS varchar(1024), + CONTENT_ITEM_CLASS varchar(1024), + DESCENDANTS varchar(1024), + mode varchar(255), + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CMS.ContentItem_AttachmentList_AUD ( + REV integer not null, + CONTENT_ITEM_ID bigint not null, + LIST_ID bigint not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, CONTENT_ITEM_ID, LIST_ID) + ); + + create table CCM_CMS.EVENT_COSTS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.EVENT_COSTS_AUD ( + REV integer not null, + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.EVENT_DATES ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.EVENT_DATES_AUD ( + REV integer not null, + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.EVENT_LOCATIONS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.EVENT_LOCATIONS_AUD ( + REV integer not null, + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.EVENT_MAIN_CONTRIBUTORS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.EVENT_MAIN_CONTRIBUTORS_AUD ( + REV integer not null, + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.EVENT_TEXTS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.EVENT_TEXTS_AUD ( + REV integer not null, + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.EVENT_TYPES ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.EVENT_TYPES_AUD ( + REV integer not null, + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.EVENTS ( + END_DATE date, + MAP_LINK varchar(255), + START_DATE date not null, + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CMS.EVENTS_AUD ( + OBJECT_ID bigint not null, + REV integer not null, + END_DATE date, + MAP_LINK varchar(255), + START_DATE date, + primary key (OBJECT_ID, REV) + ); + + create table CCM_CMS.EXTERNAL_AUDIO_ASSETS ( + ASSET_ID bigint not null, + LEGAL_METADATA_ID bigint, + primary key (ASSET_ID) + ); + + create table CCM_CMS.EXTERNAL_AUDIO_ASSETS_AUD ( + ASSET_ID bigint not null, + REV integer not null, + LEGAL_METADATA_ID bigint, + primary key (ASSET_ID, REV) + ); + + create table CCM_CMS.EXTERNAL_VIDEO_ASSET ( + ASSET_ID bigint not null, + LEGAL_METADATA_ID bigint, + primary key (ASSET_ID) + ); + + create table CCM_CMS.EXTERNAL_VIDEO_ASSET_AUD ( + ASSET_ID bigint not null, + REV integer not null, + LEGAL_METADATA_ID bigint, + primary key (ASSET_ID, REV) + ); + + create table CCM_CMS.FILES ( + ASSET_ID bigint not null, + primary key (ASSET_ID) + ); + + create table CCM_CMS.FILES_AUD ( + ASSET_ID bigint not null, + REV integer not null, + primary key (ASSET_ID, REV) + ); + + create table CCM_CMS.IMAGES ( + HEIGHT bigint, + WIDTH bigint, + ASSET_ID bigint not null, + LEGAL_METADATA_ID bigint, + primary key (ASSET_ID) + ); + + create table CCM_CMS.IMAGES_AUD ( + ASSET_ID bigint not null, + REV integer not null, + HEIGHT bigint, + WIDTH bigint, + LEGAL_METADATA_ID bigint, + primary key (ASSET_ID, REV) + ); + + create table CCM_CMS.LEGAL_METADATA ( + CREATOR varchar(255), + PUBLISHER varchar(255), + RIGHTS_HOLDER varchar(512), + ASSET_ID bigint not null, + primary key (ASSET_ID) + ); + + create table CCM_CMS.LEGAL_METADATA_AUD ( + ASSET_ID bigint not null, + REV integer not null, + CREATOR varchar(255), + PUBLISHER varchar(255), + RIGHTS_HOLDER varchar(512), + primary key (ASSET_ID, REV) + ); + + create table CCM_CMS.LEGAL_METADATA_CONTRIBUTORS ( + LEGAL_METADATA_ID bigint not null, + CONTRIBUTORS varchar(255) + ); + + create table CCM_CMS.LEGAL_METADATA_CONTRIBUTORS_AUD ( + REV integer not null, + LEGAL_METADATA_ID bigint not null, + CONTRIBUTORS varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, LEGAL_METADATA_ID, CONTRIBUTORS) + ); + + create table CCM_CMS.LEGAL_METADATA_RIGHTS ( + ASSET_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (ASSET_ID, LOCALE) + ); + + create table CCM_CMS.LEGAL_METADATA_RIGHTS_AUD ( + REV integer not null, + ASSET_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, ASSET_ID, LOCALE) + ); + + create table CCM_CMS.LIFECYCLE_DEFINITION_DESCRIPTIONS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.LIFECYCLE_DEFINITION_LABELS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.LIFECYCLE_PHASE_DEFINITION_DESCRIPTIONS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.LIFECYCLE_PHASE_DEFINITION_LABELS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.LIFECYCLE_PHASE_DEFINITIONS ( + PHASE_DEFINITION_ID bigint not null, + DEFAULT_DELAY bigint, + DEFAULT_DURATION bigint, + DEFAULT_LISTENER varchar(1024), + LIFECYCLE_DEFINITION_ID bigint, + primary key (PHASE_DEFINITION_ID) + ); + + create table CCM_CMS.LIFECYCLES ( + LIFECYCLE_ID bigint not null, + END_DATE_TIME date, + FINISHED boolean, + LISTENER varchar(1024), + START_DATE_TIME date, + STARTED boolean, + DEFINITION_ID bigint, + primary key (LIFECYCLE_ID) + ); + + create table CCM_CMS.LIFECYLE_DEFINITIONS ( + LIFECYCLE_DEFINITION_ID bigint not null, + DEFAULT_LISTENER varchar(1024), + primary key (LIFECYCLE_DEFINITION_ID) + ); + + create table CCM_CMS.LIFECYLE_PHASES ( + PHASE_ID bigint not null, + END_DATE_TIME date, + FINISHED boolean, + LISTENER varchar(1024), + START_DATE_TIME date, + STARTED boolean, + DEFINITION_ID bigint, + lifecycle_LIFECYCLE_ID bigint, + primary key (PHASE_ID) + ); + + create table CCM_CMS.MPA_SECTION_TEXTS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.MPA_SECTION_TEXTS_AUD ( + REV integer not null, + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.MPA_SECTION_TITLES ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.MPA_SECTION_TITLES_AUD ( + REV integer not null, + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.MPA_SUMMARIES ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.MPA_SUMMARIES_AUD ( + REV integer not null, + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.MULTIPART_ARTICLE_SECTIONS ( + SECTION_ID bigint not null, + PAGE_BREAK boolean, + RANK integer, + MULTIPART_ARTICLE_ID bigint, + primary key (SECTION_ID) + ); + + create table CCM_CMS.MULTIPART_ARTICLE_SECTIONS_AUD ( + SECTION_ID bigint not null, + REV integer not null, + REVTYPE tinyint, + REVEND integer, + PAGE_BREAK boolean, + RANK integer, + primary key (SECTION_ID, REV) + ); + + create table CCM_CMS.MULTIPART_ARTICLES ( + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CMS.MULTIPART_ARTICLES_AUD ( + OBJECT_ID bigint not null, + REV integer not null, + primary key (OBJECT_ID, REV) + ); + + create table CCM_CMS.MultiPartArticle_MultiPartArticleSection_AUD ( + REV integer not null, + MULTIPART_ARTICLE_ID bigint not null, + SECTION_ID bigint not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, MULTIPART_ARTICLE_ID, SECTION_ID) + ); + + create table CCM_CMS.NEWS ( + HOMEPAGE boolean, + NEWS_DATE date not null, + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CMS.NEWS_AUD ( + OBJECT_ID bigint not null, + REV integer not null, + HOMEPAGE boolean, + NEWS_DATE date, + primary key (OBJECT_ID, REV) + ); + + create table CCM_CMS.NEWS_TEXTS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.NEWS_TEXTS_AUD ( + REV integer not null, + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, OBJECT_ID, LOCALE) + ); + + create table CCM_CMS.NOTE_TEXTS ( + ASSET_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (ASSET_ID, LOCALE) + ); + + create table CCM_CMS.NOTE_TEXTS_AUD ( + REV integer not null, + ASSET_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + REVTYPE tinyint, + REVEND integer, + primary key (REV, ASSET_ID, LOCALE) + ); + + create table CCM_CMS.NOTES ( + ASSET_ID bigint not null, + primary key (ASSET_ID) + ); + + create table CCM_CMS.NOTES_AUD ( + ASSET_ID bigint not null, + REV integer not null, + primary key (ASSET_ID, REV) + ); + + create table CCM_CMS.RELATED_LINKS ( + ASSET_ID bigint not null, + BOOKMARK_ID bigint, + TARGET_ITEM bigint, + primary key (ASSET_ID) + ); + + create table CCM_CMS.RELATED_LINKS_AUD ( + ASSET_ID bigint not null, + REV integer not null, + BOOKMARK_ID bigint, + TARGET_ITEM bigint, + primary key (ASSET_ID, REV) + ); + + create table CCM_CMS.REUSABLE_ASSETS ( + OBJECT_ID bigint not null, + ASSET_ID bigint, + primary key (OBJECT_ID) + ); + + create table CCM_CMS.REUSABLE_ASSETS_AUD ( + OBJECT_ID bigint not null, + REV integer not null, + ASSET_ID bigint, + primary key (OBJECT_ID, REV) + ); + + create table CCM_CMS.TASK_EVENT_URL_GENERATOR ( + GENERATOR_ID bigint not null, + EVENT varchar(256), + URL_GENERATOR_CLASS varchar(1024), + CONTENT_TYPE_ID bigint, + TASK_TYPE_ID bigint, + primary key (GENERATOR_ID) + ); + + create table CCM_CMS.VIDEO_ASSET ( + HEIGHT bigint, + WIDTH bigint, + ASSET_ID bigint not null, + LEGAL_METADATA_ID bigint, + primary key (ASSET_ID) + ); + + create table CCM_CMS.VIDEO_ASSET_AUD ( + ASSET_ID bigint not null, + REV integer not null, + HEIGHT bigint, + WIDTH bigint, + LEGAL_METADATA_ID bigint, + primary key (ASSET_ID, REV) + ); + + create table CCM_CMS.WORKFLOW_TASK_TYPES ( + TASK_TYPE_ID bigint not null, + DEFAULT_URL_GENERATOR_CLASS varchar(1024), + PRIVILEGE varchar(256), + primary key (TASK_TYPE_ID) + ); + + create table CCM_CMS.WORKFLOW_TASKS ( + TASK_ID bigint not null, + TASK_TYPE_ID bigint, + primary key (TASK_ID) + ); + + alter table CCM_CMS.ASSETS + add constraint UK_9l2v1u9beyemgjwqx7isbumwh unique (UUID); + + create table CCM_CORE.APPLICATIONS ( + APPLICATION_TYPE varchar(1024) not null, + PRIMARY_URL varchar(1024) not null, + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.ATTACHMENTS ( + ATTACHMENT_ID bigint not null, + ATTACHMENT_DATA blob, + DESCRIPTION varchar(255), + MIME_TYPE varchar(255), + TITLE varchar(255), + MESSAGE_ID bigint, + primary key (ATTACHMENT_ID) + ); + + create table CCM_CORE.CATEGORIES ( + ABSTRACT_CATEGORY boolean, + CATEGORY_ORDER bigint, + ENABLED boolean, + NAME varchar(255) not null, + UNIQUE_ID varchar(255), + VISIBLE boolean, + OBJECT_ID bigint not null, + PARENT_CATEGORY_ID bigint, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.CATEGORIZATIONS ( + CATEGORIZATION_ID bigint not null, + CATEGORY_ORDER bigint, + CATEGORY_INDEX boolean, + OBJECT_ORDER bigint, + OBJECT_ID bigint, + CATEGORY_ID bigint, + primary key (CATEGORIZATION_ID) + ); + + create table CCM_CORE.CATEGORY_DESCRIPTIONS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CORE.CATEGORY_DOMAINS ( + DOMAIN_KEY varchar(255) not null, + RELEASED timestamp, + URI varchar(1024), + VERSION varchar(255), + OBJECT_ID bigint not null, + ROOT_CATEGORY_ID bigint, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.CATEGORY_TITLES ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CORE.CCM_OBJECTS ( + OBJECT_ID bigint not null, + DISPLAY_NAME varchar(255), + UUID varchar(255), + primary key (OBJECT_ID) + ); + + create table CCM_CORE.CCM_OBJECTS_AUD ( + OBJECT_ID bigint not null, + REV integer not null, + REVTYPE tinyint, + REVEND integer, + DISPLAY_NAME varchar(255), + primary key (OBJECT_ID, REV) + ); + + create table CCM_CORE.CCM_REVISIONS ( + id integer not null, + timestamp bigint not null, + USER_NAME varchar(255), + primary key (id) + ); + + create table CCM_CORE.CCM_ROLES ( + ROLE_ID bigint not null, + NAME varchar(512) not null, + primary key (ROLE_ID) + ); + + create table CCM_CORE.DIGESTS ( + FREQUENCY integer, + HEADER varchar(4096) not null, + NEXT_RUN timestamp, + DIGEST_SEPARATOR varchar(128) not null, + SIGNATURE varchar(4096) not null, + SUBJECT varchar(255) not null, + OBJECT_ID bigint not null, + FROM_PARTY_ID bigint, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.DOMAIN_DESCRIPTIONS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CORE.DOMAIN_OWNERSHIPS ( + OWNERSHIP_ID bigint not null, + CONTEXT varchar(255), + DOMAIN_ORDER bigint, + OWNER_ORDER bigint, + domain_OBJECT_ID bigint not null, + owner_OBJECT_ID bigint not null, + primary key (OWNERSHIP_ID) + ); + + create table CCM_CORE.DOMAIN_TITLES ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CORE.FORMBUILDER_COMPONENT_DESCRIPTIONS ( + COMPONENT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (COMPONENT_ID, LOCALE) + ); + + create table CCM_CORE.FORMBUILDER_COMPONENTS ( + ACTIVE boolean, + ADMIN_NAME varchar(255), + ATTRIBUTE_STRING varchar(255), + COMPONENT_ORDER bigint, + SELECTED boolean, + OBJECT_ID bigint not null, + parentComponent_OBJECT_ID bigint, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.FORMBUILDER_CONFIRM_EMAIL_LISTENER ( + BODY clob, + FROM_EMAIL varchar(255), + SUBJECT varchar(255), + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.FORMBUILDER_CONFIRM_REDIRECT_LISTENERS ( + URL varchar(255), + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.FORMBUILDER_DATA_DRIVEN_SELECTS ( + MULTIPLE boolean, + QUERY varchar(255), + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.FORMBUILDER_DATA_QUERIES ( + QUERY_ID varchar(255), + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.FORMBUILDER_DATA_QUERY_DESCRIPTIONS ( + DATA_QUERY_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (DATA_QUERY_ID, LOCALE) + ); + + create table CCM_CORE.FORMBUILDER_DATA_QUERY_NAMES ( + DATA_QUERY_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (DATA_QUERY_ID, LOCALE) + ); + + create table CCM_CORE.FORMBUILDER_FORMSECTIONS ( + FORMSECTION_ACTION varchar(255), + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.FORMBUILDER_LISTENERS ( + ATTRIBUTE_STRING varchar(255), + CLASS_NAME varchar(255), + OBJECT_ID bigint not null, + widget_OBJECT_ID bigint, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.FORMBUILDER_METAOBJECTS ( + CLASS_NAME varchar(255), + PRETTY_NAME varchar(255), + PRETTY_PLURAL varchar(255), + PROPERTIES_FORM varchar(255), + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.FORMBUILDER_OBJECT_TYPES ( + APP_NAME varchar(255), + CLASS_NAME varchar(255), + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.FORMBUILDER_OPTION_LABELS ( + OPTION_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OPTION_ID, LOCALE) + ); + + create table CCM_CORE.FORMBUILDER_OPTIONS ( + PARAMETER_VALUE varchar(255), + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.FORMBUILDER_PROCESS_LISTENER_DESCRIPTIONS ( + PROCESS_LISTENER_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (PROCESS_LISTENER_ID, LOCALE) + ); + + create table CCM_CORE.FORMBUILDER_PROCESS_LISTENER_NAMES ( + PROCESS_LISTENER_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (PROCESS_LISTENER_ID, LOCALE) + ); + + create table CCM_CORE.FORMBUILDER_PROCESS_LISTENERS ( + LISTENER_CLASS varchar(255), + PROCESS_LISTENER_ORDER bigint, + OBJECT_ID bigint not null, + formSection_OBJECT_ID bigint, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.FORMBUILDER_REMOTE_SERVER_POST_LISTENER ( + REMOTE_URL varchar(2048), + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.FORMBUILDER_SIMPLE_EMAIL_LISTENERS ( + RECIPIENT varchar(255), + SUBJECT varchar(255), + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.FORMBUILDER_TEMPLATE_EMAIL_LISTENERS ( + BODY clob, + RECIPIENT varchar(255), + SUBJECT varchar(255), + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.FORMBUILDER_WIDGET_LABELS ( + OBJECT_ID bigint not null, + widget_OBJECT_ID bigint, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.FORMBUILDER_WIDGETS ( + DEFAULT_VALUE varchar(255), + PARAMETER_MODEL varchar(255), + PARAMETER_NAME varchar(255), + OBJECT_ID bigint not null, + label_OBJECT_ID bigint, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.FORMBUILDER_XML_EMAIL_LISTENERS ( + RECIPIENT varchar(255), + SUBJECT varchar(255), + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.GROUP_MEMBERSHIPS ( + MEMBERSHIP_ID bigint not null, + GROUP_ID bigint, + MEMBER_ID bigint, + primary key (MEMBERSHIP_ID) + ); + + create table CCM_CORE.GROUPS ( + PARTY_ID bigint not null, + primary key (PARTY_ID) + ); + + create table CCM_CORE.HOSTS ( + HOST_ID bigint not null, + SERVER_NAME varchar(512), + SERVER_PORT bigint, + primary key (HOST_ID) + ); + + create table CCM_CORE.INITS ( + INITIALIZER_ID bigint not null, + CLASS_NAME varchar(255), + REQUIRED_BY_ID bigint, + primary key (INITIALIZER_ID) + ); + + create table CCM_CORE.INSTALLED_MODULES ( + MODULE_ID integer not null, + MODULE_CLASS_NAME varchar(2048), + STATUS varchar(255), + primary key (MODULE_ID) + ); + + create table CCM_CORE.LUCENE_DOCUMENTS ( + DOCUMENT_ID bigint not null, + CONTENT clob, + CONTENT_SECTION varchar(512), + COUNTRY varchar(8), + CREATED timestamp, + DIRTY bigint, + DOCUMENT_LANGUAGE varchar(8), + LAST_MODIFIED timestamp, + SUMMARY varchar(4096), + DOCUMENT_TIMESTAMP timestamp, + TITLE varchar(4096), + TYPE varchar(255), + TYPE_SPECIFIC_INFO varchar(512), + CREATED_BY_PARTY_ID bigint, + LAST_MODIFIED_BY bigint, + primary key (DOCUMENT_ID) + ); + + create table CCM_CORE.LUCENE_INDEXES ( + INDEX_ID bigint not null, + LUCENE_INDEX_ID bigint, + HOST_ID bigint, + primary key (INDEX_ID) + ); + + create table CCM_CORE.MESSAGES ( + BODY varchar(255), + BODY_MIME_TYPE varchar(255), + SENT timestamp, + SUBJECT varchar(255), + OBJECT_ID bigint not null, + IN_REPLY_TO_ID bigint, + SENDER_ID bigint, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.NOTIFICATIONS ( + EXPAND_GROUP boolean, + EXPUNGE boolean, + EXPUNGE_MESSAGE boolean, + FULFILL_DATE timestamp, + HEADER varchar(4096), + MAX_RETRIES bigint, + REQUEST_DATE timestamp, + SIGNATURE varchar(4096), + STATUS varchar(32), + OBJECT_ID bigint not null, + DIGEST_ID bigint, + MESSAGE_ID bigint, + RECEIVER_ID bigint, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.ONE_TIME_AUTH_TOKENS ( + TOKEN_ID bigint not null, + PURPOSE varchar(255), + TOKEN varchar(255), + VALID_UNTIL timestamp, + USER_ID bigint, + primary key (TOKEN_ID) + ); + + create table CCM_CORE.PARTIES ( + PARTY_ID bigint not null, + NAME varchar(256) not null, + primary key (PARTY_ID) + ); + + create table CCM_CORE.PERMISSIONS ( + PERMISSION_ID bigint not null, + CREATION_DATE timestamp, + CREATION_IP varchar(255), + granted_privilege varchar(255), + CREATION_USER_ID bigint, + GRANTEE_ID bigint, + OBJECT_ID bigint, + primary key (PERMISSION_ID) + ); + + create table CCM_CORE.PORTALS ( + TEMPLATE boolean, + OBJECT_ID bigint not null, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.PORTLETS ( + CELL_NUMBER bigint, + SORT_KEY bigint, + OBJECT_ID bigint not null, + PORTAL_ID bigint, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.QUEUE_ITEMS ( + QUEUE_ITEM_ID bigint not null, + HEADER varchar(4096), + RECEIVER_ADDRESS varchar(512), + RETRY_COUNT bigint, + SIGNATURE varchar(4096), + SUCCESSFUL_SENDED boolean, + MESSAGE_ID bigint, + RECEIVER_ID bigint, + primary key (QUEUE_ITEM_ID) + ); + + create table CCM_CORE.RESOURCE_DESCRIPTIONS ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CORE.RESOURCE_TITLES ( + OBJECT_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (OBJECT_ID, LOCALE) + ); + + create table CCM_CORE.RESOURCE_TYPE_DESCRIPTIONS ( + RESOURCE_TYPE_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (RESOURCE_TYPE_ID, LOCALE) + ); + + create table CCM_CORE.RESOURCE_TYPES ( + RESOURCE_TYPE_ID bigint not null, + SINGLETON boolean, + TITLE varchar(254) not null, + EMBEDDED_VIEW boolean, + FULL_PAGE_VIEW boolean, + WORKSPACE_APP boolean, + primary key (RESOURCE_TYPE_ID) + ); + + create table CCM_CORE.RESOURCES ( + CREATED timestamp, + OBJECT_ID bigint not null, + parent_OBJECT_ID bigint, + resourceType_RESOURCE_TYPE_ID bigint, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.ROLE_MEMBERSHIPS ( + MEMBERSHIP_ID bigint not null, + MEMBER_ID bigint, + ROLE_ID bigint, + primary key (MEMBERSHIP_ID) + ); + + create table CCM_CORE.SETTINGS ( + DTYPE varchar(31) not null, + SETTING_ID bigint not null, + CONFIGURATION_CLASS varchar(512) not null, + NAME varchar(512) not null, + SETTING_VALUE_BOOLEAN boolean, + SETTING_VALUE_STRING varchar(1024), + SETTING_VALUE_LONG bigint, + SETTING_VALUE_DOUBLE double, + SETTING_VALUE_BIG_DECIMAL decimal(19,2), + primary key (SETTING_ID) + ); + + create table CCM_CORE.SETTINGS_ENUM_VALUES ( + ENUM_ID bigint not null, + value varchar(255) + ); + + create table CCM_CORE.SETTINGS_L10N_STR_VALUES ( + ENTRY_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (ENTRY_ID, LOCALE) + ); + + create table CCM_CORE.SETTINGS_STRING_LIST ( + LIST_ID bigint not null, + value varchar(255) + ); + + create table CCM_CORE.TASK_ASSIGNMENTS ( + TASK_ASSIGNMENT_ID bigint not null, + ROLE_ID bigint, + TASK_ID bigint, + primary key (TASK_ASSIGNMENT_ID) + ); + + create table CCM_CORE.THREADS ( + OBJECT_ID bigint not null, + ROOT_ID bigint, + primary key (OBJECT_ID) + ); + + create table CCM_CORE.USER_EMAIL_ADDRESSES ( + USER_ID bigint not null, + EMAIL_ADDRESS varchar(512) not null, + BOUNCING boolean, + VERIFIED boolean + ); + + create table CCM_CORE.USERS ( + BANNED boolean, + FAMILY_NAME varchar(512), + GIVEN_NAME varchar(512), + PASSWORD varchar(2048), + PASSWORD_RESET_REQUIRED boolean, + EMAIL_ADDRESS varchar(512) not null, + BOUNCING boolean, + VERIFIED boolean, + PARTY_ID bigint not null, + primary key (PARTY_ID) + ); + + create table CCM_CORE.WORKFLOW_DESCRIPTIONS ( + WORKFLOW_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (WORKFLOW_ID, LOCALE) + ); + + create table CCM_CORE.WORKFLOW_NAMES ( + WORKFLOW_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (WORKFLOW_ID, LOCALE) + ); + + create table CCM_CORE.WORKFLOW_TASK_COMMENTS ( + TASK_ID bigint not null, + COMMENT clob + ); + + create table CCM_CORE.WORKFLOW_TASK_DEPENDENCIES ( + DEPENDS_ON_TASK_ID bigint not null, + DEPENDENT_TASK_ID bigint not null + ); + + create table CCM_CORE.WORKFLOW_TASK_LABELS ( + TASK_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (TASK_ID, LOCALE) + ); + + create table CCM_CORE.WORKFLOW_TASKS ( + TASK_ID bigint not null, + ACTIVE boolean, + TASK_STATE varchar(512), + WORKFLOW_ID bigint, + primary key (TASK_ID) + ); + + create table CCM_CORE.WORKFLOW_TASKS_DESCRIPTIONS ( + TASK_ID bigint not null, + LOCALIZED_VALUE clob, + LOCALE varchar(255) not null, + primary key (TASK_ID, LOCALE) + ); + + create table CCM_CORE.WORKFLOW_TEMPLATES ( + WORKFLOW_ID bigint not null, + primary key (WORKFLOW_ID) + ); + + create table CCM_CORE.WORKFLOW_USER_TASKS ( + DUE_DATE timestamp, + DURATION_MINUTES bigint, + LOCKED boolean, + START_DATE timestamp, + TASK_ID bigint not null, + LOCKING_USER_ID bigint, + NOTIFICATION_SENDER bigint, + primary key (TASK_ID) + ); + + create table CCM_CORE.WORKFLOWS ( + WORKFLOW_ID bigint not null, + primary key (WORKFLOW_ID) + ); + + alter table CCM_CORE.CATEGORY_DOMAINS + add constraint UK_mb1riernf8a88u3mwl0bgfj8y unique (DOMAIN_KEY); + + alter table CCM_CORE.CATEGORY_DOMAINS + add constraint UK_i1xqotjvml7i6ro2jq22fxf5g unique (URI); + + alter table CCM_CORE.CCM_OBJECTS + add constraint UK_1cm71jlagvyvcnkqvxqyit3wx unique (UUID); + + alter table CCM_CORE.HOSTS + add constraint UK9ramlv6uxwt13v0wj7q0tucsx unique (SERVER_NAME, SERVER_PORT); + + alter table CCM_CORE.INSTALLED_MODULES + add constraint UK_11imwgfojyi4hpr18uw9g3jvx unique (MODULE_CLASS_NAME); + + alter table CCM_CORE.SETTINGS + add constraint UK5whinfxdaepqs09e5ia9y71uk unique (CONFIGURATION_CLASS, NAME); +create sequence hibernate_sequence start with 1 increment by 1; + + alter table CCM_CMS.ARTICLE_LEADS + add constraint FK4g66u3qtfyepw0f733kuiiaul + foreign key (OBJECT_ID) + references CCM_CMS.WORKFLOW_TASK_TYPES; + + alter table CCM_CMS.ARTICLE_TEXTS + add constraint FK1pel1j53h3t3adh9o5cbje2d3 + foreign key (OBJECT_ID) + references CCM_CMS.ARTICLES; + + alter table CCM_CMS.ARTICLE_TEXTS_AUD + add constraint FKa06qks62tieeba607ykdrv3ry + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.ARTICLE_TEXTS_AUD + add constraint FKljfof07259eofkub5g2dx0jlq + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.ARTICLES + add constraint FK2pwvn9v2t2pikcw5hn2oq13q + foreign key (OBJECT_ID) + references CCM_CMS.CONTENT_ITEMS; + + alter table CCM_CMS.ARTICLES_AUD + add constraint FKnevu4il5fu4vy2f5twh50kstr + foreign key (OBJECT_ID, REV) + references CCM_CMS.CONTENT_ITEMS_AUD; + + alter table CCM_CMS.ASSET_TITLES + add constraint FKj61sy509dv63u246wlau5f9pa + foreign key (ASSET_ID) + references CCM_CMS.ASSETS; + + alter table CCM_CMS.ASSET_TITLES_AUD + add constraint FK6yuimrre2oowjo0diw6b00nhe + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.ASSET_TITLES_AUD + add constraint FKcaockxi21ve0irh06vegc77uu + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.ASSETS_AUD + add constraint FK4m4op9s9h5qhndcsssbu55gr2 + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.ASSETS_AUD + add constraint FK586j3p95nw2oa6yd06xdw0o5u + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.ATTACHMENT_LIST_CAPTIONS + add constraint FKeqcryerscpnmqpipwyrvd0lae + foreign key (LIST_ID) + references CCM_CMS.ATTACHMENT_LISTS; + + alter table CCM_CMS.ATTACHMENT_LIST_CAPTIONS_AUD + add constraint FK727detagt51wmejywhteq4jfs + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.ATTACHMENT_LIST_CAPTIONS_AUD + add constraint FK7589vpkxegxs8y3wqjx37tig3 + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.ATTACHMENT_LISTS + add constraint FK4c7jp8622b8m8nvdvdajnt0am + foreign key (CONTENT_ITEM_ID) + references CCM_CMS.CONTENT_ITEMS; + + alter table CCM_CMS.ATTACHMENT_LISTS_AUD + add constraint FKgdt5p8huh1lhk299hkrytqmqc + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.ATTACHMENT_LISTS_AUD + add constraint FKdn502yobchapgcyj1bu00u67a + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.AttachmentList_ItemAttachment_AUD + add constraint FKduowjilu7dqfs2oja88tr5oim + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.AttachmentList_ItemAttachment_AUD + add constraint FKdtm7qp3n6cojbm9b916plsgtx + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.ATTACHMENTS + add constraint FKmn0bm137vwr61iy5nb59cjm22 + foreign key (ASSET_ID) + references CCM_CMS.ASSETS; + + alter table CCM_CMS.ATTACHMENTS + add constraint FK622uanry14vw27de3d2v9uy57 + foreign key (LIST_ID) + references CCM_CMS.ATTACHMENT_LISTS; + + alter table CCM_CMS.ATTACHMENTS_AUD + add constraint FKl19663g6todb5d1e9lok7fl9e + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.ATTACHMENTS_AUD + add constraint FK4n28sostn1hc8bf43qsp1pyuf + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.AUDIO_ASSETS + add constraint FKg9tos3it7lflk5o90jluonpev + foreign key (LEGAL_METADATA_ID) + references CCM_CMS.LEGAL_METADATA; + + alter table CCM_CMS.AUDIO_ASSETS + add constraint FKa1m18ejmeknjiibvh2dac6tas + foreign key (ASSET_ID) + references CCM_CMS.BINARY_ASSETS; + + alter table CCM_CMS.AUDIO_ASSETS_AUD + add constraint FKaf381a7d420ru9114rqcpr2b4 + foreign key (ASSET_ID, REV) + references CCM_CMS.BINARY_ASSETS_AUD; + + alter table CCM_CMS.BINARY_ASSET_DESCRIPTIONS + add constraint FK31kl9gu49nvhcku7gfsro6hqq + foreign key (ASSET_ID) + references CCM_CMS.BINARY_ASSETS; + + alter table CCM_CMS.BINARY_ASSET_DESCRIPTIONS_AUD + add constraint FKhehi2pvqliq0s2jhv661lar7g + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.BINARY_ASSET_DESCRIPTIONS_AUD + add constraint FK9f5n81i6j0yopog1hvua2wmxc + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.BINARY_ASSETS + add constraint FK65sp6cl7d8qjmqgku1bjtpsdy + foreign key (ASSET_ID) + references CCM_CMS.ASSETS; + + alter table CCM_CMS.BINARY_ASSETS_AUD + add constraint FKovfkjrq3eka9fsfe5sidw07p3 + foreign key (ASSET_ID, REV) + references CCM_CMS.ASSETS_AUD; + + alter table CCM_CMS.BOOKMARK_DESCRIPTIONS + add constraint FKmeydpwmlq0wqw3gab4auiyrqg + foreign key (ASSET_ID) + references CCM_CMS.BOOKMARKS; + + alter table CCM_CMS.BOOKMARK_DESCRIPTIONS_AUD + add constraint FKfff2ein3uhgwyyyajamy3hfwy + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.BOOKMARK_DESCRIPTIONS_AUD + add constraint FKtl48flnrkr0upvrc1ksy1o92m + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.BOOKMARKS + add constraint FKhs1tohpjry5sqdpl3cijl5ppk + foreign key (ASSET_ID) + references CCM_CMS.ASSETS; + + alter table CCM_CMS.BOOKMARKS_AUD + add constraint FKjrk2tah1gyn67acth3g7olvuc + foreign key (ASSET_ID, REV) + references CCM_CMS.ASSETS_AUD; + + alter table CCM_CMS.CONTENT_ITEM_DESCRIPTIONS + add constraint FK6mt4tjnenr79o52wcj99tpeu4 + foreign key (OBJECT_ID) + references CCM_CMS.CONTENT_ITEMS; + + alter table CCM_CMS.CONTENT_ITEM_DESCRIPTIONS_AUD + add constraint FK12yrysxv4fxa73ker40e883av + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.CONTENT_ITEM_DESCRIPTIONS_AUD + add constraint FK4pxuq0pf2hrtireo902t21ocx + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.CONTENT_ITEM_NAMES + add constraint FKijrfangf9s3lyncmod651xyg8 + foreign key (OBJECT_ID) + references CCM_CMS.CONTENT_ITEMS; + + alter table CCM_CMS.CONTENT_ITEM_NAMES_AUD + add constraint FKq631ee5ollx5xkliowcrt8wkj + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.CONTENT_ITEM_NAMES_AUD + add constraint FKbjaycalit9pa2u7ae5dwjgtky + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.CONTENT_ITEM_TITLES + add constraint FKbvf67lou4ep94pgi6tur6o2gf + foreign key (OBJECT_ID) + references CCM_CMS.CONTENT_ITEMS; + + alter table CCM_CMS.CONTENT_ITEM_TITLES_AUD + add constraint FKfbno0rxshoi57y8aehwv3o42j + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.CONTENT_ITEM_TITLES_AUD + add constraint FK4c3exifj1ghwg6htglynlo094 + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.CONTENT_ITEMS + add constraint FKi1ce005bvnavqy8xlyim60yav + foreign key (contentType_OBJECT_ID) + references CCM_CMS.CONTENT_TYPES; + + alter table CCM_CMS.CONTENT_ITEMS + add constraint FK1fr2q5y1wpmrufruja5ivfpuf + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CMS.CONTENT_ITEMS_AUD + add constraint FKsfhj0qok0ksjplvgcaditqekl + foreign key (OBJECT_ID, REV) + references CCM_CORE.CCM_OBJECTS_AUD; + + alter table CCM_CMS.CONTENT_SECTION_ROLES + add constraint FKkn5nygbmub9wd5lxw3402t82d + foreign key (ROLE_ID) + references CCM_CORE.CCM_ROLES; + + alter table CCM_CMS.CONTENT_SECTION_ROLES + add constraint FKgcn76piocmkmvl3b0omv9vkv9 + foreign key (SECTION_ID) + references CCM_CMS.CONTENT_SECTIONS; + + alter table CCM_CMS.CONTENT_SECTIONS + add constraint FKajweudfxaf7g2ydr2hcgqwcib + foreign key (ROOT_ASSETS_FOLDER_ID) + references CCM_CORE.CATEGORIES; + + alter table CCM_CMS.CONTENT_SECTIONS + add constraint FK6g7kw4b6diqa0nks45ilp0vhs + foreign key (ROOT_DOCUMENTS_FOLDER_ID) + references CCM_CORE.CATEGORIES; + + alter table CCM_CMS.CONTENT_SECTIONS + add constraint FK72jh0axiiru87i61mppvaiv96 + foreign key (OBJECT_ID) + references CCM_CORE.APPLICATIONS; + + alter table CCM_CMS.CONTENT_TYPE_DESCRIPTIONS + add constraint FKknyen2aw844b65grp7uys34cb + foreign key (OBJECT_ID) + references CCM_CMS.CONTENT_TYPES; + + alter table CCM_CMS.CONTENT_TYPE_LABELS + add constraint FK3suusqws1xgffyk3yob7m7dge + foreign key (OBJECT_ID) + references CCM_CMS.CONTENT_TYPES; + + alter table CCM_CMS.CONTENT_TYPES + add constraint FK96vwsbqfbdg33ujeeawajr0v4 + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CMS.ContentItem_AttachmentList_AUD + add constraint FK4notdhn18abev1asay7cmyy84 + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.ContentItem_AttachmentList_AUD + add constraint FK16sw895gdgghrymbirrgrvxsa + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.EVENT_COSTS + add constraint FKrbmepytotc73h5inefeih6rea + foreign key (OBJECT_ID) + references CCM_CMS.EVENTS; + + alter table CCM_CMS.EVENT_COSTS_AUD + add constraint FKocok2fj1oflsi16i9guf8bpc6 + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.EVENT_COSTS_AUD + add constraint FKr17panho66n1ixh8tdms01e2c + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.EVENT_DATES + add constraint FKfsfsbgoeoi511ll69iy1v7ujs + foreign key (OBJECT_ID) + references CCM_CMS.EVENTS; + + alter table CCM_CMS.EVENT_DATES_AUD + add constraint FK70p2ayg7fexrb9jogdu3vlwfb + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.EVENT_DATES_AUD + add constraint FKklmki82kiy0hwwpfdur2s7l3e + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.EVENT_LOCATIONS + add constraint FK8snwub57evwh6px3n265tcoiv + foreign key (OBJECT_ID) + references CCM_CMS.EVENTS; + + alter table CCM_CMS.EVENT_LOCATIONS_AUD + add constraint FKk5thpb1gaktsk213o53y97hno + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.EVENT_LOCATIONS_AUD + add constraint FKivwe7h7k4myq4rhuh2wkepd9j + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.EVENT_MAIN_CONTRIBUTORS + add constraint FKlmq881mxd08hthm5dy4ayjq0e + foreign key (OBJECT_ID) + references CCM_CMS.EVENTS; + + alter table CCM_CMS.EVENT_MAIN_CONTRIBUTORS_AUD + add constraint FKqgkj5almojvt913heh1f4kro5 + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.EVENT_MAIN_CONTRIBUTORS_AUD + add constraint FKh8vhg85li7c8yqjrg2plvkgho + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.EVENT_TEXTS + add constraint FKc46r2g7ry50b9e875dldjhwxp + foreign key (OBJECT_ID) + references CCM_CMS.EVENTS; + + alter table CCM_CMS.EVENT_TEXTS_AUD + add constraint FK82mc7uswliij43std6gwyswj3 + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.EVENT_TEXTS_AUD + add constraint FK1s381t783dmpk0fup65mvma0w + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.EVENT_TYPES + add constraint FKhdbj26ubbhmht44qpin7ony29 + foreign key (OBJECT_ID) + references CCM_CMS.EVENTS; + + alter table CCM_CMS.EVENT_TYPES_AUD + add constraint FKgby7m27rnb6oeloqycyf4b1kx + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.EVENT_TYPES_AUD + add constraint FKhcpvb5q2geclo5vxk0gt815x8 + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.EVENTS + add constraint FKt56odfo39eq13gcj1bbtngoj7 + foreign key (OBJECT_ID) + references CCM_CMS.CONTENT_ITEMS; + + alter table CCM_CMS.EVENTS_AUD + add constraint FK9gofktd490afdwak49x15w6me + foreign key (OBJECT_ID, REV) + references CCM_CMS.CONTENT_ITEMS_AUD; + + alter table CCM_CMS.EXTERNAL_AUDIO_ASSETS + add constraint FKrwn3rdmqevi618fthojs0xkkq + foreign key (LEGAL_METADATA_ID) + references CCM_CMS.LEGAL_METADATA; + + alter table CCM_CMS.EXTERNAL_AUDIO_ASSETS + add constraint FK5sxviewjxfgk0at60emrpuh3n + foreign key (ASSET_ID) + references CCM_CMS.BOOKMARKS; + + alter table CCM_CMS.EXTERNAL_AUDIO_ASSETS_AUD + add constraint FK6814o1fnh49p5ij9cfvr7y00s + foreign key (ASSET_ID, REV) + references CCM_CMS.BOOKMARKS_AUD; + + alter table CCM_CMS.EXTERNAL_VIDEO_ASSET + add constraint FK3jia7ctpjs0u510hi0qqexu5t + foreign key (LEGAL_METADATA_ID) + references CCM_CMS.LEGAL_METADATA; + + alter table CCM_CMS.EXTERNAL_VIDEO_ASSET + add constraint FKc6m77lkbfa5ym2s8sq00jkyjf + foreign key (ASSET_ID) + references CCM_CMS.BOOKMARKS; + + alter table CCM_CMS.EXTERNAL_VIDEO_ASSET_AUD + add constraint FKd5efitnmsrko2vq48ei1mclfv + foreign key (ASSET_ID, REV) + references CCM_CMS.BOOKMARKS_AUD; + + alter table CCM_CMS.FILES + add constraint FK4e8p3tu8ocy43ofs9uifuk8gh + foreign key (ASSET_ID) + references CCM_CMS.BINARY_ASSETS; + + alter table CCM_CMS.FILES_AUD + add constraint FK3c9xf8w1dr3q0grxslguvviqn + foreign key (ASSET_ID, REV) + references CCM_CMS.BINARY_ASSETS_AUD; + + alter table CCM_CMS.IMAGES + add constraint FK51ja1101epvl74auenv6sqyev + foreign key (LEGAL_METADATA_ID) + references CCM_CMS.LEGAL_METADATA; + + alter table CCM_CMS.IMAGES + add constraint FK9mgknvtu1crw4el5d4sqy8d6c + foreign key (ASSET_ID) + references CCM_CMS.BINARY_ASSETS; + + alter table CCM_CMS.IMAGES_AUD + add constraint FK6xggeoexci2har3mceo9naqiy + foreign key (ASSET_ID, REV) + references CCM_CMS.BINARY_ASSETS_AUD; + + alter table CCM_CMS.LEGAL_METADATA + add constraint FKjxss2fb6khhn68e8ccuksl9hk + foreign key (ASSET_ID) + references CCM_CMS.ASSETS; + + alter table CCM_CMS.LEGAL_METADATA_AUD + add constraint FKofjkwpepeyb6e8tytnhjfvx49 + foreign key (ASSET_ID, REV) + references CCM_CMS.ASSETS_AUD; + + alter table CCM_CMS.LEGAL_METADATA_CONTRIBUTORS + add constraint FKf9s3kxi6y5r60wksv5bospmx1 + foreign key (LEGAL_METADATA_ID) + references CCM_CMS.LEGAL_METADATA; + + alter table CCM_CMS.LEGAL_METADATA_CONTRIBUTORS_AUD + add constraint FKc3lonfk7mn3p14ix96k5u74om + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.LEGAL_METADATA_CONTRIBUTORS_AUD + add constraint FKgxxsteesd2em96fj05f0u4men + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.LEGAL_METADATA_RIGHTS + add constraint FKhsy9u7nrh3slmkkri3nba7e1 + foreign key (ASSET_ID) + references CCM_CMS.LEGAL_METADATA; + + alter table CCM_CMS.LEGAL_METADATA_RIGHTS_AUD + add constraint FKe2da3kha2nl6sj0dllhepuxtq + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.LEGAL_METADATA_RIGHTS_AUD + add constraint FKr867xswbxlqq6diyqyqnrh670 + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.LIFECYCLE_DEFINITION_DESCRIPTIONS + add constraint FKsdr5aoogu4b9x95m8qsbe4t0y + foreign key (OBJECT_ID) + references CCM_CMS.LIFECYLE_DEFINITIONS; + + alter table CCM_CMS.LIFECYCLE_DEFINITION_LABELS + add constraint FKt4h71sl91ue18b25pdjty7jex + foreign key (OBJECT_ID) + references CCM_CMS.LIFECYLE_DEFINITIONS; + + alter table CCM_CMS.LIFECYCLE_PHASE_DEFINITION_DESCRIPTIONS + add constraint FKafbeck8qm0nflpt9aedn196ou + foreign key (OBJECT_ID) + references CCM_CMS.LIFECYCLE_PHASE_DEFINITIONS; + + alter table CCM_CMS.LIFECYCLE_PHASE_DEFINITION_LABELS + add constraint FKqysn500b0sp7bu8gy2sf2q8b9 + foreign key (OBJECT_ID) + references CCM_CMS.LIFECYCLE_PHASE_DEFINITIONS; + + alter table CCM_CMS.LIFECYCLE_PHASE_DEFINITIONS + add constraint FKq5cwomuc9s1f3fsriq9t35407 + foreign key (LIFECYCLE_DEFINITION_ID) + references CCM_CMS.LIFECYLE_DEFINITIONS; + + alter table CCM_CMS.LIFECYCLES + add constraint FK5yx1a2f8g4w95p1ul77sfhow8 + foreign key (DEFINITION_ID) + references CCM_CMS.LIFECYLE_DEFINITIONS; + + alter table CCM_CMS.LIFECYLE_PHASES + add constraint FKpqysexvd82e4xd4uibtdfn8j4 + foreign key (DEFINITION_ID) + references CCM_CMS.LIFECYCLE_PHASE_DEFINITIONS; + + alter table CCM_CMS.LIFECYLE_PHASES + add constraint FKerihqw4gpb0lwap6x73us7wos + foreign key (lifecycle_LIFECYCLE_ID) + references CCM_CMS.LIFECYCLES; + + alter table CCM_CMS.MPA_SECTION_TEXTS + add constraint FKaruovr4oa07syyhvkixfwc17h + foreign key (OBJECT_ID) + references CCM_CMS.MULTIPART_ARTICLE_SECTIONS; + + alter table CCM_CMS.MPA_SECTION_TEXTS_AUD + add constraint FKs4kvqroybq9ldb2rwhr6v8kmt + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.MPA_SECTION_TEXTS_AUD + add constraint FKpxvtsycad805c8u0vyh7pcb2c + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.MPA_SECTION_TITLES + add constraint FK7qpmrj6yjvad50k5budn5rag4 + foreign key (OBJECT_ID) + references CCM_CMS.MULTIPART_ARTICLE_SECTIONS; + + alter table CCM_CMS.MPA_SECTION_TITLES_AUD + add constraint FKk64mi5911ybptw4slxh8i0lgb + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.MPA_SECTION_TITLES_AUD + add constraint FKq7f0y31r5tk2nesx0lv53d6sb + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.MPA_SUMMARIES + add constraint FK5kx5ghrkh6tqa2vms2qabacx8 + foreign key (OBJECT_ID) + references CCM_CMS.MULTIPART_ARTICLES; + + alter table CCM_CMS.MPA_SUMMARIES_AUD + add constraint FKmmrabpl2gsrdb2udc76x9o6q7 + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.MPA_SUMMARIES_AUD + add constraint FK3kebu6i1dtwfegp4409hhob4x + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.MULTIPART_ARTICLE_SECTIONS + add constraint FK30tkd6xp4i1gg6nrse4di2yxx + foreign key (MULTIPART_ARTICLE_ID) + references CCM_CMS.MULTIPART_ARTICLES; + + alter table CCM_CMS.MULTIPART_ARTICLE_SECTIONS_AUD + add constraint FK8xq6k3a1kmnxv9nh5wae80k6k + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.MULTIPART_ARTICLE_SECTIONS_AUD + add constraint FKsudhdaa9hs73447yik8mdy3ts + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.MULTIPART_ARTICLES + add constraint FKj7j0ew378cmcta2dfdso4tmey + foreign key (OBJECT_ID) + references CCM_CMS.CONTENT_ITEMS; + + alter table CCM_CMS.MULTIPART_ARTICLES_AUD + add constraint FKacl2u1cx6tmwfb9cpaxstw39k + foreign key (OBJECT_ID, REV) + references CCM_CMS.CONTENT_ITEMS_AUD; + + alter table CCM_CMS.MultiPartArticle_MultiPartArticleSection_AUD + add constraint FK9vexjsvd62ufkgi4g24qiql70 + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.MultiPartArticle_MultiPartArticleSection_AUD + add constraint FK4ds2fgwphr74869qkn4e2yia6 + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.NEWS + add constraint FKl8jhpvtn0lx9drkhhbbuvqqis + foreign key (OBJECT_ID) + references CCM_CMS.CONTENT_ITEMS; + + alter table CCM_CMS.NEWS_AUD + add constraint FK7akvtda3f51espb46xtjalcl2 + foreign key (OBJECT_ID, REV) + references CCM_CMS.CONTENT_ITEMS_AUD; + + alter table CCM_CMS.NEWS_TEXTS + add constraint FK1s5m60rf80iaidktawb3ebmf3 + foreign key (OBJECT_ID) + references CCM_CMS.NEWS; + + alter table CCM_CMS.NEWS_TEXTS_AUD + add constraint FKrand9sf233sgkgp8wfoen468l + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.NEWS_TEXTS_AUD + add constraint FKotjtrajmmjxussl4pvy2vl7ho + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.NOTE_TEXTS + add constraint FKa0yp21m25o7omtnag0eet8v8q + foreign key (ASSET_ID) + references CCM_CMS.NOTES; + + alter table CCM_CMS.NOTE_TEXTS_AUD + add constraint FKoxggogvr9ek831d7y3omu8wvw + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.NOTE_TEXTS_AUD + add constraint FKg1kfbj306ufy8034a83a7ft2o + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CMS.NOTES + add constraint FKb5msdqwvlj4ipd1r8f8uxuoy4 + foreign key (ASSET_ID) + references CCM_CMS.ASSETS; + + alter table CCM_CMS.NOTES_AUD + add constraint FKjr3tek35d3f0xm4xp0s811cah + foreign key (ASSET_ID, REV) + references CCM_CMS.ASSETS_AUD; + + alter table CCM_CMS.RELATED_LINKS + add constraint FKb517dnfj56oby2s34jp1omuim + foreign key (BOOKMARK_ID) + references CCM_CMS.BOOKMARKS; + + alter table CCM_CMS.RELATED_LINKS + add constraint FK7ts8tmnwxi8kry7cer3egujsv + foreign key (TARGET_ITEM) + references CCM_CMS.CONTENT_ITEMS; + + alter table CCM_CMS.RELATED_LINKS + add constraint FKf4r30ra4a2ajuky0tk4lc06n5 + foreign key (ASSET_ID) + references CCM_CMS.ASSETS; + + alter table CCM_CMS.RELATED_LINKS_AUD + add constraint FKkda2cf5ynu7v7udi0ytfmr9ij + foreign key (ASSET_ID, REV) + references CCM_CMS.ASSETS_AUD; + + alter table CCM_CMS.REUSABLE_ASSETS + add constraint FKngdq6f077q6ndqn9o3jc6k14a + foreign key (ASSET_ID) + references CCM_CMS.ASSETS; + + alter table CCM_CMS.REUSABLE_ASSETS + add constraint FKhvf4mfltp8abbr5u0qgjm2jk2 + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CMS.REUSABLE_ASSETS_AUD + add constraint FKgyc5gd3cffox4wvjoir6i4gxt + foreign key (OBJECT_ID, REV) + references CCM_CORE.CCM_OBJECTS_AUD; + + alter table CCM_CMS.TASK_EVENT_URL_GENERATOR + add constraint FKjjasedpc2ef91iknmiyqwhxrs + foreign key (CONTENT_TYPE_ID) + references CCM_CMS.CONTENT_TYPES; + + alter table CCM_CMS.TASK_EVENT_URL_GENERATOR + add constraint FKi3tnip5gr0i5hvw8skw21pveh + foreign key (TASK_TYPE_ID) + references CCM_CMS.WORKFLOW_TASK_TYPES; + + alter table CCM_CMS.VIDEO_ASSET + add constraint FKdjjbp8p48xwfqhw0oo79tkyjy + foreign key (LEGAL_METADATA_ID) + references CCM_CMS.LEGAL_METADATA; + + alter table CCM_CMS.VIDEO_ASSET + add constraint FK9cynf36vykykyaga2j1xs7jkx + foreign key (ASSET_ID) + references CCM_CMS.BINARY_ASSETS; + + alter table CCM_CMS.VIDEO_ASSET_AUD + add constraint FK7qsbfxxg6ixpkjjor4nbkd63i + foreign key (ASSET_ID, REV) + references CCM_CMS.BINARY_ASSETS_AUD; + + alter table CCM_CMS.WORKFLOW_TASKS + add constraint FK1sk7ouwhx9r3buxvbfvfa7nnm + foreign key (TASK_TYPE_ID) + references CCM_CMS.WORKFLOW_TASK_TYPES; + + alter table CCM_CMS.WORKFLOW_TASKS + add constraint FKge2x94m1y9tr7mk26ensyn674 + foreign key (TASK_ID) + references CCM_CORE.WORKFLOW_USER_TASKS; + + alter table CCM_CORE.APPLICATIONS + add constraint FKatcp9ij6mbkx0nfeig1o6n3lm + foreign key (OBJECT_ID) + references CCM_CORE.RESOURCES; + + alter table CCM_CORE.ATTACHMENTS + add constraint FK8ju9hm9baceridp803nislkwb + foreign key (MESSAGE_ID) + references CCM_CORE.MESSAGES; + + alter table CCM_CORE.CATEGORIES + add constraint FKrj3marx99nheur4fqanm0ylur + foreign key (PARENT_CATEGORY_ID) + references CCM_CORE.CATEGORIES; + + alter table CCM_CORE.CATEGORIES + add constraint FKpm291swli2musd0204phta652 + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.CATEGORIZATIONS + add constraint FKejp0ubk034nfq60v1po6srkke + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.CATEGORIZATIONS + add constraint FKoyeipswl876wa6mqwbx0uy83h + foreign key (CATEGORY_ID) + references CCM_CORE.CATEGORIES; + + alter table CCM_CORE.CATEGORY_DESCRIPTIONS + add constraint FKhiwjlmh5vkbu3v3vng1la1qum + foreign key (OBJECT_ID) + references CCM_CORE.CATEGORIES; + + alter table CCM_CORE.CATEGORY_DOMAINS + add constraint FKf25vi73cji01w8fgo6ow1dgg + foreign key (ROOT_CATEGORY_ID) + references CCM_CORE.CATEGORIES; + + alter table CCM_CORE.CATEGORY_DOMAINS + add constraint FK58xpmnvciohkom1c16oua4xha + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.CATEGORY_TITLES + add constraint FKka9bt9f5br0kji5bcjxcmf6ch + foreign key (OBJECT_ID) + references CCM_CORE.CATEGORIES; + + alter table CCM_CORE.CCM_OBJECTS_AUD + add constraint FKr00eauutiyvocno8ckx6h9nw6 + foreign key (REV) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CORE.CCM_OBJECTS_AUD + add constraint FKo5s37ctcdny7tmewjwv7705h5 + foreign key (REVEND) + references CCM_CORE.CCM_REVISIONS; + + alter table CCM_CORE.DIGESTS + add constraint FKc53g09agnye3w1v4euy3e0gsi + foreign key (FROM_PARTY_ID) + references CCM_CORE.PARTIES; + + alter table CCM_CORE.DIGESTS + add constraint FK845r9ep6xu6nbt1mvxulwybym + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.DOMAIN_DESCRIPTIONS + add constraint FKn4i2dxgn8cqysa62dds6eih6a + foreign key (OBJECT_ID) + references CCM_CORE.CATEGORY_DOMAINS; + + alter table CCM_CORE.DOMAIN_OWNERSHIPS + add constraint FK47nsasr7jrdwlky5gx0u6e9py + foreign key (domain_OBJECT_ID) + references CCM_CORE.CATEGORY_DOMAINS; + + alter table CCM_CORE.DOMAIN_OWNERSHIPS + add constraint FK3u4hq6yqau4m419b1xva3xpwq + foreign key (owner_OBJECT_ID) + references CCM_CORE.APPLICATIONS; + + alter table CCM_CORE.DOMAIN_TITLES + add constraint FK5p526dsdwn94els6lp5w0hdn4 + foreign key (OBJECT_ID) + references CCM_CORE.CATEGORY_DOMAINS; + + alter table CCM_CORE.FORMBUILDER_COMPONENT_DESCRIPTIONS + add constraint FKfh0k9lj3pf4amfc9bbbss0tr1 + foreign key (COMPONENT_ID) + references CCM_CORE.FORMBUILDER_COMPONENTS; + + alter table CCM_CORE.FORMBUILDER_COMPONENTS + add constraint FKpcpmvyiix023b4g5n4q8nkfca + foreign key (parentComponent_OBJECT_ID) + references CCM_CORE.FORMBUILDER_COMPONENTS; + + alter table CCM_CORE.FORMBUILDER_COMPONENTS + add constraint FKt0e0uv00pp1rwhyaltrytghnm + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.FORMBUILDER_CONFIRM_EMAIL_LISTENER + add constraint FK48khrbud3xhi2gvsvnlttd8tg + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_PROCESS_LISTENERS; + + alter table CCM_CORE.FORMBUILDER_CONFIRM_REDIRECT_LISTENERS + add constraint FKbyjjt2ufendvje2obtge2l7et + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_PROCESS_LISTENERS; + + alter table CCM_CORE.FORMBUILDER_DATA_DRIVEN_SELECTS + add constraint FK8oriyta1957u7dvbrqk717944 + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_WIDGETS; + + alter table CCM_CORE.FORMBUILDER_DATA_QUERIES + add constraint FKhhaxpeddbtmrnjr5o0fopju3a + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.FORMBUILDER_DATA_QUERY_DESCRIPTIONS + add constraint FKsmduu1opoiulkeo2gc8v7lsbn + foreign key (DATA_QUERY_ID) + references CCM_CORE.FORMBUILDER_DATA_QUERIES; + + alter table CCM_CORE.FORMBUILDER_DATA_QUERY_NAMES + add constraint FKju1x82inrw3kguyjuxoetn6gn + foreign key (DATA_QUERY_ID) + references CCM_CORE.FORMBUILDER_DATA_QUERIES; + + alter table CCM_CORE.FORMBUILDER_FORMSECTIONS + add constraint FKnfhsgxp4lvigq2pm33pn4afac + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_COMPONENTS; + + alter table CCM_CORE.FORMBUILDER_LISTENERS + add constraint FK33ilyirwoux28yowafgd5xx0o + foreign key (widget_OBJECT_ID) + references CCM_CORE.FORMBUILDER_WIDGETS; + + alter table CCM_CORE.FORMBUILDER_LISTENERS + add constraint FKlqm76746nq5yrt8ganm474uu0 + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.FORMBUILDER_METAOBJECTS + add constraint FKf963v6u9mw8pwjmasrw51w8dx + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.FORMBUILDER_OBJECT_TYPES + add constraint FKkv337e83rsecf0h3qy8bu7l9w + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.FORMBUILDER_OPTION_LABELS + add constraint FKatlsylsvln6yse55eof6wwkj6 + foreign key (OPTION_ID) + references CCM_CORE.FORMBUILDER_OPTIONS; + + alter table CCM_CORE.FORMBUILDER_OPTIONS + add constraint FKhe5q71wby9g4i56sotc501h11 + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_COMPONENTS; + + alter table CCM_CORE.FORMBUILDER_PROCESS_LISTENER_DESCRIPTIONS + add constraint FKcv3iu04gxjk9c0pn6tl8rqqv3 + foreign key (PROCESS_LISTENER_ID) + references CCM_CORE.FORMBUILDER_PROCESS_LISTENERS; + + alter table CCM_CORE.FORMBUILDER_PROCESS_LISTENER_NAMES + add constraint FK8rnyb1m6ij3b9hhmhr7klgd4p + foreign key (PROCESS_LISTENER_ID) + references CCM_CORE.FORMBUILDER_PROCESS_LISTENERS; + + alter table CCM_CORE.FORMBUILDER_PROCESS_LISTENERS + add constraint FK7uiaeax8qafm82e5k729ms5ku + foreign key (formSection_OBJECT_ID) + references CCM_CORE.FORMBUILDER_FORMSECTIONS; + + alter table CCM_CORE.FORMBUILDER_PROCESS_LISTENERS + add constraint FKbdnloo884qk6gn36jwiqv5rlp + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.FORMBUILDER_REMOTE_SERVER_POST_LISTENER + add constraint FKpajvu9m6fj1enm67a9gcb5ii9 + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_PROCESS_LISTENERS; + + alter table CCM_CORE.FORMBUILDER_SIMPLE_EMAIL_LISTENERS + add constraint FKsn82ktlq0c9ikijyv8k2bfv4f + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_PROCESS_LISTENERS; + + alter table CCM_CORE.FORMBUILDER_TEMPLATE_EMAIL_LISTENERS + add constraint FK8kjyu72btjsuaaqh4bvd8npns + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_PROCESS_LISTENERS; + + alter table CCM_CORE.FORMBUILDER_WIDGET_LABELS + add constraint FKb1q9bfshcrkwlj7r8w5jb4y8l + foreign key (widget_OBJECT_ID) + references CCM_CORE.FORMBUILDER_WIDGETS; + + alter table CCM_CORE.FORMBUILDER_WIDGET_LABELS + add constraint FKm1huo6ghk9l5o8buku9v8y6q7 + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_COMPONENTS; + + alter table CCM_CORE.FORMBUILDER_WIDGETS + add constraint FKs7qq6vxblhmq0rlf87re65jdp + foreign key (label_OBJECT_ID) + references CCM_CORE.FORMBUILDER_WIDGET_LABELS; + + alter table CCM_CORE.FORMBUILDER_WIDGETS + add constraint FK1wosr4ujbfckdc50u5fgmrhrk + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_COMPONENTS; + + alter table CCM_CORE.FORMBUILDER_XML_EMAIL_LISTENERS + add constraint FKjie9co03m7ow4ihig5rk7l8oj + foreign key (OBJECT_ID) + references CCM_CORE.FORMBUILDER_PROCESS_LISTENERS; + + alter table CCM_CORE.GROUP_MEMBERSHIPS + add constraint FKq4qnny8ri3eo7eqh4olxco8nk + foreign key (GROUP_ID) + references CCM_CORE.GROUPS; + + alter table CCM_CORE.GROUP_MEMBERSHIPS + add constraint FKc8u86ivkhvoiw6ju8b2p365he + foreign key (MEMBER_ID) + references CCM_CORE.USERS; + + alter table CCM_CORE.GROUPS + add constraint FK4f61mlqxw0ct6s7wwpi9m0735 + foreign key (PARTY_ID) + references CCM_CORE.PARTIES; + + alter table CCM_CORE.INITS + add constraint FK3nvvxk10nmq9nfuko8yklqdgc + foreign key (REQUIRED_BY_ID) + references CCM_CORE.INITS; + + alter table CCM_CORE.LUCENE_DOCUMENTS + add constraint FK942kl4yff8rdiwr0pjk2a9g8 + foreign key (CREATED_BY_PARTY_ID) + references CCM_CORE.USERS; + + alter table CCM_CORE.LUCENE_DOCUMENTS + add constraint FKc5rs6afx4p9fidabfqsxr5ble + foreign key (LAST_MODIFIED_BY) + references CCM_CORE.USERS; + + alter table CCM_CORE.LUCENE_INDEXES + add constraint FK6gu0yrlviqk07dtb3r02iw43f + foreign key (HOST_ID) + references CCM_CORE.HOSTS; + + alter table CCM_CORE.MESSAGES + add constraint FKph10aehmg9f20pn2w4buki97q + foreign key (IN_REPLY_TO_ID) + references CCM_CORE.MESSAGES; + + alter table CCM_CORE.MESSAGES + add constraint FKjufsx3c3h538fj35h8hgfnb1p + foreign key (SENDER_ID) + references CCM_CORE.USERS; + + alter table CCM_CORE.MESSAGES + add constraint FK6w20ao7scwecd9mfwpun2ddqx + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.NOTIFICATIONS + add constraint FKqk70c1x1dklhty9ju5t4wukd9 + foreign key (DIGEST_ID) + references CCM_CORE.DIGESTS; + + alter table CCM_CORE.NOTIFICATIONS + add constraint FKtt4fjr2p75og79jxxgd8q8mr + foreign key (MESSAGE_ID) + references CCM_CORE.MESSAGES; + + alter table CCM_CORE.NOTIFICATIONS + add constraint FK2vlnma0ox43j0clx8ead08n5s + foreign key (RECEIVER_ID) + references CCM_CORE.PARTIES; + + alter table CCM_CORE.NOTIFICATIONS + add constraint FKf423hhiaw1bexpxeh1pnas7qt + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.ONE_TIME_AUTH_TOKENS + add constraint FKtplfuphkiorfkttaewb4wmfjc + foreign key (USER_ID) + references CCM_CORE.USERS; + + alter table CCM_CORE.PERMISSIONS + add constraint FKj9di7pawxgtouxmu2k44bj5c4 + foreign key (CREATION_USER_ID) + references CCM_CORE.USERS; + + alter table CCM_CORE.PERMISSIONS + add constraint FKikx3x0kn9fito23g50v6xbr9f + foreign key (GRANTEE_ID) + references CCM_CORE.CCM_ROLES; + + alter table CCM_CORE.PERMISSIONS + add constraint FKkamckexjnffnt8lay9nqeawhm + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.PORTALS + add constraint FK5a2hdrbw03mmgr74vj5nxlpvk + foreign key (OBJECT_ID) + references CCM_CORE.RESOURCES; + + alter table CCM_CORE.PORTLETS + add constraint FK9gr5xjt3rx4uhtw7vl6adruol + foreign key (PORTAL_ID) + references CCM_CORE.PORTALS; + + alter table CCM_CORE.PORTLETS + add constraint FKjmx9uebt0gwxkw3xv34niy35f + foreign key (OBJECT_ID) + references CCM_CORE.RESOURCES; + + alter table CCM_CORE.QUEUE_ITEMS + add constraint FKtgkwfruv9kjdybf46l02da088 + foreign key (MESSAGE_ID) + references CCM_CORE.MESSAGES; + + alter table CCM_CORE.QUEUE_ITEMS + add constraint FKs9aq1hyxstwmvx7fmfifp4x7r + foreign key (RECEIVER_ID) + references CCM_CORE.PARTIES; + + alter table CCM_CORE.RESOURCE_DESCRIPTIONS + add constraint FKk9arvj5u21rv23ce3cav4opqx + foreign key (OBJECT_ID) + references CCM_CORE.RESOURCES; + + alter table CCM_CORE.RESOURCE_TITLES + add constraint FKto4p6n2wklljyf7tmuxtmyfe0 + foreign key (OBJECT_ID) + references CCM_CORE.RESOURCES; + + alter table CCM_CORE.RESOURCE_TYPE_DESCRIPTIONS + add constraint FKckpihjtv23iahbg3imnpbsr2 + foreign key (RESOURCE_TYPE_ID) + references CCM_CORE.RESOURCE_TYPES; + + alter table CCM_CORE.RESOURCES + add constraint FKbo7ibfgodicn9flv2gfo11g5a + foreign key (parent_OBJECT_ID) + references CCM_CORE.RESOURCES; + + alter table CCM_CORE.RESOURCES + add constraint FK262fbwetpjx3k4uuvw24wsiv + foreign key (resourceType_RESOURCE_TYPE_ID) + references CCM_CORE.RESOURCE_TYPES; + + alter table CCM_CORE.RESOURCES + add constraint FKbjdf8pm4frth8r06ev2qjm88f + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.ROLE_MEMBERSHIPS + add constraint FK9m88ywi7rcin7b7jrgh53emrq + foreign key (MEMBER_ID) + references CCM_CORE.PARTIES; + + alter table CCM_CORE.ROLE_MEMBERSHIPS + add constraint FKcsyogv5m2rgsrmtgnhgkjhfw7 + foreign key (ROLE_ID) + references CCM_CORE.CCM_ROLES; + + alter table CCM_CORE.SETTINGS_ENUM_VALUES + add constraint FK8mw4p92s0h3h8bmo8saowu32i + foreign key (ENUM_ID) + references CCM_CORE.SETTINGS; + + alter table CCM_CORE.SETTINGS_L10N_STR_VALUES + add constraint FK5knjq7cisej0qfx5dw1y93rou + foreign key (ENTRY_ID) + references CCM_CORE.SETTINGS; + + alter table CCM_CORE.SETTINGS_STRING_LIST + add constraint FKqeclqa5sf1g53vxs857tpwrus + foreign key (LIST_ID) + references CCM_CORE.SETTINGS; + + alter table CCM_CORE.TASK_ASSIGNMENTS + add constraint FKe29uwmvxdmol1fjob3auej4qv + foreign key (ROLE_ID) + references CCM_CORE.CCM_ROLES; + + alter table CCM_CORE.TASK_ASSIGNMENTS + add constraint FKc1vovbjg9mp5yegx2fdoutx7u + foreign key (TASK_ID) + references CCM_CORE.WORKFLOW_USER_TASKS; + + alter table CCM_CORE.THREADS + add constraint FKsx08mpwvwnw97uwdgjs76q39g + foreign key (ROOT_ID) + references CCM_CORE.MESSAGES; + + alter table CCM_CORE.THREADS + add constraint FKp97b1sy1kop07rtapeh5l9fb2 + foreign key (OBJECT_ID) + references CCM_CORE.CCM_OBJECTS; + + alter table CCM_CORE.USER_EMAIL_ADDRESSES + add constraint FKr900l79erul95seyyccf04ufc + foreign key (USER_ID) + references CCM_CORE.USERS; + + alter table CCM_CORE.USERS + add constraint FKosh928q71aonu6l1kurb417r + foreign key (PARTY_ID) + references CCM_CORE.PARTIES; + + alter table CCM_CORE.WORKFLOW_DESCRIPTIONS + add constraint FKgx7upkqky82dpxvbs95imfl9l + foreign key (WORKFLOW_ID) + references CCM_CORE.WORKFLOWS; + + alter table CCM_CORE.WORKFLOW_NAMES + add constraint FKkxedy9p48avfk45r0bn4uc09i + foreign key (WORKFLOW_ID) + references CCM_CORE.WORKFLOWS; + + alter table CCM_CORE.WORKFLOW_TASK_COMMENTS + add constraint FKkfqrf9jdvm7livu5if06w0r5t + foreign key (TASK_ID) + references CCM_CORE.WORKFLOW_TASKS; + + alter table CCM_CORE.WORKFLOW_TASK_DEPENDENCIES + add constraint FK1htp420ki24jaswtcum56iawe + foreign key (DEPENDENT_TASK_ID) + references CCM_CORE.WORKFLOW_TASKS; + + alter table CCM_CORE.WORKFLOW_TASK_DEPENDENCIES + add constraint FK8rbggnp4yjpab8quvvx800ymy + foreign key (DEPENDS_ON_TASK_ID) + references CCM_CORE.WORKFLOW_TASKS; + + alter table CCM_CORE.WORKFLOW_TASK_LABELS + add constraint FKf715qud6g9xv2xeb8rrpnv4xs + foreign key (TASK_ID) + references CCM_CORE.WORKFLOW_TASKS; + + alter table CCM_CORE.WORKFLOW_TASKS + add constraint FK1693cbc36e4d8gucg8q7sc57e + foreign key (WORKFLOW_ID) + references CCM_CORE.WORKFLOWS; + + alter table CCM_CORE.WORKFLOW_TASKS_DESCRIPTIONS + add constraint FK2s2498d2tpojjrtghq7iyaosv + foreign key (TASK_ID) + references CCM_CORE.WORKFLOW_TASKS; + + alter table CCM_CORE.WORKFLOW_TEMPLATES + add constraint FK8692vdme4yxnkj1m0k1dw74pk + foreign key (WORKFLOW_ID) + references CCM_CORE.WORKFLOWS; + + alter table CCM_CORE.WORKFLOW_USER_TASKS + add constraint FKf09depwj5rgso2dair07vnu33 + foreign key (LOCKING_USER_ID) + references CCM_CORE.USERS; + + alter table CCM_CORE.WORKFLOW_USER_TASKS + add constraint FK6evo9y34awhdfcyl8gv78qb7f + foreign key (NOTIFICATION_SENDER) + references CCM_CORE.USERS; + + alter table CCM_CORE.WORKFLOW_USER_TASKS + add constraint FKefpdf9ojplu7loo31hfm0wl2h + foreign key (TASK_ID) + references CCM_CORE.WORKFLOW_TASKS; diff --git a/ccm-core/src/main/java/com/arsdigita/bebop/tree/TreeNode.java b/ccm-core/src/main/java/com/arsdigita/bebop/tree/TreeNode.java index 4e29232f2..c26285dd7 100644 --- a/ccm-core/src/main/java/com/arsdigita/bebop/tree/TreeNode.java +++ b/ccm-core/src/main/java/com/arsdigita/bebop/tree/TreeNode.java @@ -32,6 +32,7 @@ public interface TreeNode { /** * Obtain a unique ID representing the node + * @return */ Object getKey(); diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppInstanceForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppInstanceForm.java index 909fb0bb4..c7b97be16 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppInstanceForm.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppInstanceForm.java @@ -19,8 +19,10 @@ package com.arsdigita.ui.admin.applications; import com.arsdigita.bebop.Form; +import com.arsdigita.bebop.FormProcessException; import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.ParameterSingleSelectionModel; +import com.arsdigita.bebop.event.FormProcessListener; import org.libreccm.cdi.utils.CdiUtil; import org.libreccm.web.ApplicationRepository; @@ -49,10 +51,14 @@ public abstract class AbstractAppInstanceForm extends Form { this.selectedAppInstance = selectedAppInstance; createWidgets(); + + addProcessListener(createProcessListener()); } protected abstract void createWidgets(); + protected abstract FormProcessListener createProcessListener(); + protected ApplicationType getSelectedAppType(final PageState state) { final org.libreccm.web.ApplicationManager appManager = CdiUtil .createCdiUtil().findBean(org.libreccm.web.ApplicationManager.class); diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeNode.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeNode.java index db3df2737..05288a156 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeNode.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeNode.java @@ -19,17 +19,23 @@ package com.arsdigita.ui.admin.applications; import com.arsdigita.bebop.tree.TreeNode; +import com.arsdigita.kernel.KernelConfig; import org.libreccm.cdi.utils.CdiUtil; +import org.libreccm.configuration.ConfigurationManager; import org.libreccm.l10n.GlobalizationHelper; import org.libreccm.web.CcmApplication; +import java.util.Locale; + /** * * @author Jens Pelzetter */ public class ApplicationInstanceTreeNode implements TreeNode { + protected static final String INSTANCE_NODE_KEY_PREFIX = "appinstance_"; + private final CcmApplication application; public ApplicationInstanceTreeNode(final CcmApplication application) { @@ -38,17 +44,38 @@ public class ApplicationInstanceTreeNode implements TreeNode { @Override public Object getKey() { - return application.getObjectId(); + return String.format("%s%d", + INSTANCE_NODE_KEY_PREFIX, + application.getObjectId()); } @Override public Object getElement() { final GlobalizationHelper globalizationHelper = CdiUtil.createCdiUtil() .findBean(GlobalizationHelper.class); - return application.getTitle().getValue(globalizationHelper - .getNegotiatedLocale()); + final ConfigurationManager confManager = CdiUtil.createCdiUtil() + .findBean(ConfigurationManager.class); + final KernelConfig kernelConfig = confManager.findConfiguration( + KernelConfig.class); + final Locale defaultLocale = new Locale(kernelConfig + .getDefaultLanguage()); + + final String title; + if (application.getTitle().hasValue(globalizationHelper + .getNegotiatedLocale())) { + title = application.getTitle().getValue(globalizationHelper + .getNegotiatedLocale()); + } else if (application.getTitle().hasValue(defaultLocale)) { + title = application.getTitle().getValue(defaultLocale); + } else if (application.getTitle().hasValue(Locale.getDefault())) { + title = application.getTitle().getValue(Locale.getDefault()); + } else { + title = application.getPrimaryUrl(); + } + + return title; } - + public CcmApplication getApplication() { return application; } diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypeTreeNode.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypeTreeNode.java index 90aaa22fd..7b5fd1483 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypeTreeNode.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypeTreeNode.java @@ -29,6 +29,8 @@ import org.libreccm.web.ApplicationType; */ public class ApplicationTypeTreeNode implements TreeNode { + protected final static String TYPE_NODE_KEY_PREFIX = "apptype_"; + private final ApplicationType applicationType; public ApplicationTypeTreeNode(final ApplicationType applicationType) { @@ -37,7 +39,7 @@ public class ApplicationTypeTreeNode implements TreeNode { @Override public Object getKey() { - return applicationType.name(); + return String.join("", TYPE_NODE_KEY_PREFIX, applicationType.name()); } @Override diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsTab.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsTab.java index 1e5f6f0c5..d47e7103b 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsTab.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsTab.java @@ -33,7 +33,9 @@ import com.arsdigita.toolbox.ui.LayoutPanel; import com.arsdigita.util.UncheckedWrapperException; import org.libreccm.cdi.utils.CdiUtil; +import org.libreccm.web.ApplicationRepository; import org.libreccm.web.ApplicationType; +import org.libreccm.web.CcmApplication; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @@ -81,15 +83,37 @@ public class ApplicationsTab extends LayoutPanel { applicationTree = new Tree(new ApplicationTreeModelBuilder()); applicationTree.addChangeListener(e -> { + final PageState state = e.getPageState(); + final String key = (String) applicationTree.getSelectedKey(state); - final Object key = applicationTree.getSelectedKey(state); - if (key instanceof Long) { + if (key.startsWith( + ApplicationInstanceTreeNode.INSTANCE_NODE_KEY_PREFIX)) { + + //Instance is selected + final String instanceId = key.substring( + ApplicationInstanceTreeNode.INSTANCE_NODE_KEY_PREFIX + .length()); + selectedAppInstance.setSelectedKey(state, instanceId); + + final ApplicationRepository appRepo = CdiUtil.createCdiUtil() + .findBean(ApplicationRepository.class); + final CcmApplication application = appRepo.findById( + Long.parseLong(instanceId)); + if (application != null) { + selectedAppType.setSelectedKey( + state, application.getApplicationType()); + } + + showAppSettings(state); + + } else if (key.startsWith( + ApplicationTypeTreeNode.TYPE_NODE_KEY_PREFIX)) { - } else if (key instanceof String) { //ApplicationType node is selected showManagementLinks(state); - final String appTypeKey = (String) key; + final String appTypeKey = key.substring( + ApplicationTypeTreeNode.TYPE_NODE_KEY_PREFIX.length()); selectedAppType.setSelectedKey(state, appTypeKey); @@ -196,6 +220,7 @@ public class ApplicationsTab extends LayoutPanel { settingsPanes.put(appTypeName, settingsPane); } else { final AbstractAppInstanceForm instanceForm = createInstanceForm( + String.format("%s_instance_form", appTypeName), instanceFormClass); managementPanel.add(instanceForm); instanceForms.put(appTypeName, instanceForm); @@ -246,11 +271,17 @@ public class ApplicationsTab extends LayoutPanel { } protected void showInstances(final PageState state) { - placeholderInstances.setVisible(state, true); - placeholderSingletonSettings.setVisible(state, false); - appInfo.setVisible(state, false); + hideAllInstanceForms(state); hideAllSettingsPanes(state); + + //placeholderInstances.setVisible(state, true); + final String appType = selectedAppType.getSelectedKey(state); + if (instanceForms.containsKey(appType)) { + instanceForms.get(appType).setVisible(state, true); + } + placeholderSingletonSettings.setVisible(state, false); + appInfo.setVisible(state, false); } protected void hideInstances(final PageState state) { @@ -273,6 +304,31 @@ public class ApplicationsTab extends LayoutPanel { appInfo.setVisible(state, false); } + protected void showAppSettings(final PageState state) { + hideAllInstanceForms(state); + hideAllSettingsPanes(state); + hideManagementLinks(state); + placeholderInstances.setVisible(state, false); + placeholderSingletonSettings.setVisible(state, false); + + if (settingsPanes.containsKey(selectedAppType.getSelectedKey(state))) { + settingsPanes.get(selectedAppType.getSelectedKey(state)).setVisible( + state, true); + } + +// final String appId = selectedAppInstance.getSelectedKey(state); +// final ApplicationRepository appRepo = CdiUtil.createCdiUtil().findBean( +// ApplicationRepository.class); +// final CcmApplication application = appRepo.findById(Long +// .parseLong(appId)); +// if (application != null) { +// final String appType = application.getApplicationType(); +// if (settingsPanes.containsKey(appType)) { +// settingsPanes.get(appType).setVisible(state, true); +// } +// } + } + protected void hideSingletonAppSettings(final PageState state) { placeholderSingletonSettings.setVisible(state, false); hideAllInstanceForms(state); @@ -306,15 +362,18 @@ public class ApplicationsTab extends LayoutPanel { } private AbstractAppInstanceForm createInstanceForm( - Class instanceFormClass) { + final String name, + final Class instanceFormClass) { try { final Constructor constructor = instanceFormClass - .getConstructor(ParameterSingleSelectionModel.class, + .getConstructor(String.class, + ParameterSingleSelectionModel.class, ParameterSingleSelectionModel.class); - return constructor.newInstance(selectedAppType, + return constructor.newInstance(name, + selectedAppType, selectedAppInstance); } catch (NoSuchMethodException | SecurityException | diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationInstanceForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationInstanceForm.java index 2c6140393..a70b6808c 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationInstanceForm.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationInstanceForm.java @@ -18,30 +18,211 @@ */ package com.arsdigita.ui.admin.applications; +import com.arsdigita.bebop.Form; +import com.arsdigita.bebop.FormData; +import com.arsdigita.bebop.FormProcessException; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.ParameterSingleSelectionModel; +import com.arsdigita.bebop.SaveCancelSection; +import com.arsdigita.bebop.Table; import com.arsdigita.bebop.Text; +import com.arsdigita.bebop.event.FormProcessListener; +import com.arsdigita.bebop.event.FormSectionEvent; +import com.arsdigita.bebop.form.TextField; +import com.arsdigita.bebop.parameters.NotEmptyValidationListener; +import com.arsdigita.bebop.table.TableColumn; +import com.arsdigita.bebop.table.TableColumnModel; +import com.arsdigita.bebop.table.TableModel; +import com.arsdigita.bebop.table.TableModelBuilder; +import com.arsdigita.globalization.GlobalizedMessage; +import com.arsdigita.util.LockableImpl; +import com.arsdigita.util.UncheckedWrapperException; + +import org.libreccm.cdi.utils.CdiUtil; +import org.libreccm.web.ApplicationCreateException; +import org.libreccm.web.ApplicationRepository; +import org.libreccm.web.ApplicationType; +import org.libreccm.web.CcmApplication; + +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +import static com.arsdigita.ui.admin.AdminUiConstants.*; /** * * @author Jens Pelzetter */ -public class DefaultApplicationInstanceForm - extends AbstractAppInstanceForm { +public class DefaultApplicationInstanceForm extends AbstractAppInstanceForm { + + private static final int COL_PRIMARY_URL = 0; + + private SaveCancelSection saveCancelSection; public DefaultApplicationInstanceForm( final String name, final ParameterSingleSelectionModel selectedAppType, final ParameterSingleSelectionModel selectedAppInstance) { - + super(name, selectedAppType, selectedAppInstance); } @Override protected void createWidgets() { - add(new Text("placeholder")); + + addInstanceTable(); + + final Label newInstanceFormHeading = new Label(new GlobalizedMessage( + "ui.admin.applications.new_instance_form.title", ADMIN_BUNDLE)); + newInstanceFormHeading.setClassAttr("heading"); + add(newInstanceFormHeading); + + final TextField primaryUrl = new TextField("new_instance_primary_url"); + primaryUrl.setLabel(new GlobalizedMessage( + "ui.admin.applications.new_instance.primary_url", ADMIN_BUNDLE)); + primaryUrl.addValidationListener(new NotEmptyValidationListener( + new GlobalizedMessage( + "ui.admin.applications.new_instance.primary_url.error.not_empty", + ADMIN_BUNDLE))); + add(primaryUrl); + + saveCancelSection = new SaveCancelSection(); + add(saveCancelSection); + + //add(new Text("placeholder")); + } + + protected SaveCancelSection getSaveCancelSection() { + return saveCancelSection; + } + + protected void addInstanceTable() { + final Label tableHeading = new Label(new GlobalizedMessage( + "ui.admin.applications.instance_table.heading", ADMIN_BUNDLE)); + tableHeading.setClassAttr("heading"); + add(tableHeading); + + final Table instanceTable = new Table(); + final TableColumnModel colModel = instanceTable.getColumnModel(); + colModel.add(new TableColumn( + COL_PRIMARY_URL, + new Label(new GlobalizedMessage( + "ui.admin.applications.instances_table.col_primary_url", + ADMIN_BUNDLE)))); + instanceTable.setModelBuilder(new InstanceTableModelBuilder(this)); + add(instanceTable); + } + + @Override + @SuppressWarnings("unchecked") + protected FormProcessListener createProcessListener() { + return (FormSectionEvent e) -> { + final PageState state = e.getPageState(); + if (saveCancelSection.getSaveButton().isSelected(state)) { + final FormData data = e.getFormData(); + + final String primaryUrlData = data.getString( + "new_instance_primary_url"); + + final org.libreccm.web.ApplicationManager appManager = CdiUtil + .createCdiUtil().findBean( + org.libreccm.web.ApplicationManager.class); + try { + appManager.createInstance( + getSelectedAppType(state), + primaryUrlData, + (Class) getSelectedAppType(state) + .applicationClass()); + } catch (ApplicationCreateException ex) { + throw new UncheckedWrapperException( + "Failed to create new application instance.", ex); + } + + final Class clazz = getSelectedAppType(state) + .applicationClass(); + if (!clazz.isAssignableFrom(CcmApplication.class)) { + throw new UncheckedWrapperException(String.format( + "Application class \"%s\" is not a sub class of " + + "class \"%s\". Something is wrong...", + clazz.getName(), CcmApplication.class.getName())); + } + final CcmApplication application; + try { + application = (CcmApplication) clazz.newInstance(); + } catch (InstantiationException | IllegalAccessException ex) { + throw new UncheckedWrapperException( + String.format("Failed to create object of " + + "class \"%s\".", + clazz.getName()), + ex); + } + + application.setPrimaryUrl(primaryUrlData); + + final ApplicationRepository appRepo = CdiUtil.createCdiUtil() + .findBean(ApplicationRepository.class); + appRepo.save(application); + } + }; + } + + private class InstanceTableModelBuilder extends LockableImpl + implements TableModelBuilder { + + private final AbstractAppInstanceForm instanceForm; + + public InstanceTableModelBuilder( + final AbstractAppInstanceForm instanceForm) { + this.instanceForm = instanceForm; + } + + @Override + public TableModel makeModel(final Table table, final PageState state) { + return new InstanceTableModel(instanceForm.getSelectedAppType(state)); + } + + } + + private class InstanceTableModel implements TableModel { + + private final List instances; + private int index = -1; + + public InstanceTableModel(final ApplicationType appType) { + final ApplicationRepository appRepo = CdiUtil.createCdiUtil() + .findBean(ApplicationRepository.class); + instances = appRepo.findByType(appType.name()); + } + + @Override + public int getColumnCount() { + return 1; + } + + @Override + public boolean nextRow() { + index++; + return index < instances.size(); + } + + @Override + public Object getElementAt(final int columnIndex) { + switch (columnIndex) { + case COL_PRIMARY_URL: + return instances.get(index).getPrimaryUrl(); + default: + throw new IllegalArgumentException("Illegal columnIndex"); + } + } + + @Override + public Object getKeyAt(final int columnIndex) { + return Long.toString(instances.get(index).getObjectId()); + } + } - - } diff --git a/ccm-core/src/main/java/org/libreccm/modules/CcmIntegrator.java b/ccm-core/src/main/java/org/libreccm/modules/CcmIntegrator.java index f7eae857b..223e31aba 100644 --- a/ccm-core/src/main/java/org/libreccm/modules/CcmIntegrator.java +++ b/ccm-core/src/main/java/org/libreccm/modules/CcmIntegrator.java @@ -54,14 +54,14 @@ import javax.sql.DataSource; public class CcmIntegrator implements Integrator { private static final Logger LOGGER = LogManager.getLogger( - CcmIntegrator.class); + CcmIntegrator.class); /** * Name of the property which is used to retrieve the data source in use * from Hibernate. */ private static final String DATASOURCE_PROPERTY - = "hibernate.connection.datasource"; + = "hibernate.connection.datasource"; /** * Service loader containing all modules. Initialised by the @@ -94,7 +94,7 @@ public class CcmIntegrator implements Integrator { try { //Create dependency tree for the modules final DependencyTreeManager treeManager - = new DependencyTreeManager(); + = new DependencyTreeManager(); final List tree = treeManager.generateTree(modules); final List orderedNodes = treeManager.orderModules(tree); @@ -110,7 +110,7 @@ public class CcmIntegrator implements Integrator { // //Get DataSource and Connection from the sessionFactory of // //Hibernate. final DataSource dataSource = (DataSource) sessionFactory. - getProperties().get(DATASOURCE_PROPERTY); + getProperties().get(DATASOURCE_PROPERTY); if (dataSource == null) { throw new IllegalStateException("No data source available."); } @@ -121,7 +121,7 @@ public class CcmIntegrator implements Integrator { final Flyway flyway = new Flyway(); flyway.setDataSource(dataSource); final StringBuffer buffer = new StringBuffer( - "db/migrations/org/libreccm/base"); + "db/migrations/org/libreccm/base"); appendDbLocation(buffer, connection); flyway.setLocations(buffer.toString()); flyway.migrate(); @@ -199,15 +199,16 @@ public class CcmIntegrator implements Integrator { * If the database is not supported an {@link IntegrationException} will be * thrown. * - * @param buffer Buffer for the location string. + * @param buffer Buffer for the location string. * @param connection The JDBC connection object. * - * @throws SQLException If an error occurs while accessing the database. + * @throws SQLException If an error occurs while accessing the + * database. * @throws IntegrationException If the database is not supported yet. */ private void appendDbLocation(final StringBuffer buffer, final Connection connection) - throws SQLException { + throws SQLException { switch (connection.getMetaData().getDatabaseProductName()) { case "H2": @@ -218,9 +219,9 @@ public class CcmIntegrator implements Integrator { break; default: throw new IntegrationException(String.format( - "Integration failed. Database \"%s\" is not supported yet.", - connection.getMetaData(). - getDatabaseProductName())); + "Integration failed. Database \"%s\" is not supported yet.", + connection.getMetaData(). + getDatabaseProductName())); } } @@ -236,10 +237,10 @@ public class CcmIntegrator implements Integrator { */ private String getLocation(final ModuleInfo moduleInfo, final Connection connection) - throws SQLException { + throws SQLException { final StringBuffer buffer = new StringBuffer( - "classpath:/db/migrations/"); + "classpath:/db/migrations/"); buffer.append(moduleInfo.getModuleDataPackage()); appendDbLocation(buffer, connection); @@ -249,7 +250,7 @@ public class CcmIntegrator implements Integrator { /** * Helper method for executing the migrations for a module. * - * @param module The module for which the migrations are executed. + * @param module The module for which the migrations are executed. * @param dataSource The JDBC data source for connecting to the database. * * @throws SQLException If an error occurs while applying the migrations. @@ -269,9 +270,8 @@ public class CcmIntegrator implements Integrator { //Set schema correctly for the different databases. Necessary because //different RDBMS handle case different. if ("H2".equals(connection.getMetaData().getDatabaseProductName())) { - flyway - .setSchemas(getSchemaName(moduleInfo).toUpperCase( - Locale.ROOT)); + flyway.setSchemas(getSchemaName(moduleInfo).toUpperCase( + Locale.ROOT)); } else { flyway.setSchemas(getSchemaName(moduleInfo)); } @@ -303,11 +303,11 @@ public class CcmIntegrator implements Integrator { if (newModule) { try (Statement statement = connection.createStatement()) { statement.execute(String.format( - "INSERT INTO ccm_core.installed_modules " - + "(module_id, module_class_name, status) " - + "VALUES (%d, '%s', 'NEW')", - module.getName().hashCode(), - module.getName())); + "INSERT INTO ccm_core.installed_modules " + + "(module_id, module_class_name, status) " + + "VALUES (%d, '%s', 'NEW')", + module.getName().hashCode(), + module.getName())); } catch (SQLException ex) { throw new IntegrationException("Failed to integrate.", ex); } @@ -333,7 +333,7 @@ public class CcmIntegrator implements Integrator { //Get JDBC connection final DataSource dataSource = (DataSource) sessionFactory - .getProperties().get(DATASOURCE_PROPERTY); + .getProperties().get(DATASOURCE_PROPERTY); connection = dataSource.getConnection(); System.out.println("checking modules..."); LOGGER.info("Checking modules..."); @@ -344,10 +344,10 @@ public class CcmIntegrator implements Integrator { try (Statement query = connection.createStatement(); //Check status of each module ResultSet result = query.executeQuery( - String.format("SELECT module_class_name, status " - + "FROM ccm_core.installed_modules " + String.format("SELECT module_class_name, status " + + "FROM ccm_core.installed_modules " + "WHERE module_class_name = '%s'", - module.getClass().getName()))) { + module.getClass().getName()))) { System.out.printf("Checking status of module %s...%n", module.getClass().getName()); @@ -355,7 +355,7 @@ public class CcmIntegrator implements Integrator { //If there modules marked for uninstall remove the schema //of the module from the database. if (result.next() && ModuleStatus.UNINSTALL.toString() - .equals(result.getString("status"))) { + .equals(result.getString("status"))) { uninstallModule(connection, dataSource, module, @@ -389,7 +389,7 @@ public class CcmIntegrator implements Integrator { final DataSource dataSource, final CcmModule module, final ModuleInfo moduleInfo) - throws SQLException { + throws SQLException { LOGGER.info("Removing schema for module %s...", module.getClass().getName()); final Flyway flyway = new Flyway(); @@ -402,16 +402,16 @@ public class CcmIntegrator implements Integrator { //Delete the module from the installed modules table. try (final Statement statement = connection - .createStatement()) { + .createStatement()) { statement.addBatch(String.format( - "DELETE FROM ccm_core.installed_modules " - + "WHERE module_class_name = '%s'", - module.getClass().getName())); + "DELETE FROM ccm_core.installed_modules " + + "WHERE module_class_name = '%s'", + module.getClass().getName())); statement.executeBatch(); LOGGER.info("Done."); } catch (SQLException ex) { throw new IntegrationException( - "Failed to desintegrate", ex); + "Failed to desintegrate", ex); } } diff --git a/ccm-core/src/main/java/org/libreccm/security/ApplicationRoleSetup.java b/ccm-core/src/main/java/org/libreccm/security/ApplicationRoleSetup.java index 21ffe5809..56014e297 100644 --- a/ccm-core/src/main/java/org/libreccm/security/ApplicationRoleSetup.java +++ b/ccm-core/src/main/java/org/libreccm/security/ApplicationRoleSetup.java @@ -70,7 +70,7 @@ public class ApplicationRoleSetup { final Permission permission = createPermission(role, privilege); permission.setObject(ccmObject); - entityManager.persist(privilege); + entityManager.persist(permission); entityManager.merge(role); } diff --git a/ccm-core/src/main/java/org/libreccm/security/SystemUsersSetup.java b/ccm-core/src/main/java/org/libreccm/security/SystemUsersSetup.java index 477e893da..da2482975 100644 --- a/ccm-core/src/main/java/org/libreccm/security/SystemUsersSetup.java +++ b/ccm-core/src/main/java/org/libreccm/security/SystemUsersSetup.java @@ -126,6 +126,10 @@ public class SystemUsersSetup { final Properties properties = new Properties(); if (inputStream == null) { LOGGER.warn("No integration properties available."); + LOGGER.warn("Using empty integration properties"); + return new Properties(); + } else { + LOGGER.info("Loading integration.properties..."); properties.load(inputStream); } return properties; diff --git a/ccm-core/src/main/java/org/libreccm/web/AbstractCcmApplicationSetup.java b/ccm-core/src/main/java/org/libreccm/web/AbstractCcmApplicationSetup.java index 3035928a4..9255173c8 100644 --- a/ccm-core/src/main/java/org/libreccm/web/AbstractCcmApplicationSetup.java +++ b/ccm-core/src/main/java/org/libreccm/web/AbstractCcmApplicationSetup.java @@ -57,7 +57,9 @@ public abstract class AbstractCcmApplicationSetup { try (InputStream inputStream = getClass().getResourceAsStream( CoreConstants.INTEGRATION_PROPS)) { final Properties properties = new Properties(); - properties.load(inputStream); + if (inputStream != null) { + properties.load(inputStream); + } return properties; } catch (IOException ex) { LOGGER.warn( @@ -75,26 +77,26 @@ public abstract class AbstractCcmApplicationSetup { appRoleSetup.grantPermission(role, privilege); } - public void grantPermission(final Role role, + public void grantPermission(final Role role, final String privilege, final CcmObject ccmObject) { appRoleSetup.grantPermission(role, privilege, ccmObject); } public void grantPermissions(final Role role, final String... privileges) { - for(final String privilege : privileges) { + for (final String privilege : privileges) { grantPermission(role, privilege); } } - - public void grantPermissions(final Role role, + + public void grantPermissions(final Role role, final CcmObject ccmObject, final String... privileges) { - for(final String privilege : privileges) { + for (final String privilege : privileges) { grantPermission(role, privilege, ccmObject); } } - + public abstract void setup(); } diff --git a/ccm-core/src/main/java/org/libreccm/web/ApplicationManager.java b/ccm-core/src/main/java/org/libreccm/web/ApplicationManager.java index 0032de364..9989a85f2 100644 --- a/ccm-core/src/main/java/org/libreccm/web/ApplicationManager.java +++ b/ccm-core/src/main/java/org/libreccm/web/ApplicationManager.java @@ -21,6 +21,7 @@ package org.libreccm.web; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.util.Strings; +import org.libreccm.cdi.utils.CdiUtil; import org.libreccm.core.CoreConstants; import org.libreccm.l10n.GlobalizationHelper; import org.libreccm.modules.CcmModule; @@ -37,7 +38,6 @@ import java.util.ResourceBundle; import java.util.ServiceLoader; import javax.annotation.PostConstruct; -import javax.ejb.TransactionAttribute; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; import javax.persistence.EntityManager; @@ -92,19 +92,14 @@ public class ApplicationManager { final ApplicationType type, final String path, final Class applicationClass) throws ApplicationCreateException { + @SuppressWarnings("unchecked") + final ApplicationCreator creator = CdiUtil.createCdiUtil().findBean( + type.creator()); + final T application = creator.createInstance(path, type); - try { - @SuppressWarnings("unchecked") - final ApplicationCreator creator = type.creator().newInstance(); - final T application = creator.createInstance(path, type); + entityManager.persist(application); - entityManager.persist(application); - - return application; - } catch (InstantiationException | IllegalAccessException ex) { - throw new ApplicationCreateException("Failed to create application.", - ex); - } + return application; } @AuthorizationRequired diff --git a/ccm-core/src/main/java/org/libreccm/web/ApplicationRepository.java b/ccm-core/src/main/java/org/libreccm/web/ApplicationRepository.java index caf888ef9..cd52ccfd1 100644 --- a/ccm-core/src/main/java/org/libreccm/web/ApplicationRepository.java +++ b/ccm-core/src/main/java/org/libreccm/web/ApplicationRepository.java @@ -18,7 +18,6 @@ */ package org.libreccm.web; -import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.libreccm.core.AbstractEntityRepository; import org.libreccm.core.CoreConstants; import org.libreccm.security.AuthorizationRequired; @@ -57,6 +56,7 @@ public class ApplicationRepository * @return The application mounted at {@code path} or {@code null} if there * is no application mounted at that {@code path}. */ + @Transactional(Transactional.TxType.REQUIRED) public CcmApplication retrieveApplicationForPath(final String path) { final TypedQuery query = getEntityManager() .createNamedQuery("CcmApplication.retrieveApplicationForPath", @@ -77,6 +77,7 @@ public class ApplicationRepository * @return A list of the installed applications of the provided * {@code type}. */ + @Transactional(Transactional.TxType.REQUIRED) public List findByType(final String type) { final TypedQuery query = getEntityManager() .createNamedQuery("CcmApplication.Application.findByType", diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties index b3243fa8f..6c32b8ade 100644 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties @@ -540,3 +540,9 @@ ui.admin.applications.type.property_sheet.servlet_path=Servlet path ui.admin.applications.info.heading=About the application type ui.admin.applications.settings.singleton.no_setting_for=No settings for application {0} available. ui.admin.applications.settings.instance.no_setting_for=No settings for instance of application type {0} available. +ui.admin.applications.instances.link=Instances +ui.admin.applications.instances_table.col_primary_url=Primary URL +ui.admin.applications.new_instance_form.title=Create new instance +ui.admin.applications.instance_table.heading=Instances +ui.admin.applications.new_instance.primary_url=Primary URL +ui.admin.applications.new_instance.primary_url.error.not_empty=The primary URL of an application instance can't be empty. diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties index 788b1faa1..618bba6ce 100644 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties @@ -543,3 +543,10 @@ ui.admin.applications.type.property_sheet.servlet_path=Servlet-Pfad ui.admin.applications.info.heading=\u00dcber den Applikationstyp ui.admin.applications.settings.singleton.no_setting_for=Keine Einstellungen f\u00fcr Applikation {0} verf\u00fcbar. ui.admin.applications.settings.instance.no_setting_for=Keine Einstellungen f\u00fcr Instanzen des Typs {0} verf\u00fcgbar. +ui.admin.applications.instances.link=Instanzen +ui.admin.applications.instances_table.col_primary_url=Prim\u00e4re URL +#Create new instance +ui.admin.applications.new_instance_form.title=Neue Instanz anlegen +ui.admin.applications.instance_table.heading=Instanzen +ui.admin.applications.new_instance.primary_url=Prim\u00e4re URL +ui.admin.applications.new_instance.primary_url.error.not_empty=Die prim\u00e4re URL einer Applikations-Instanz kann nicht leer sein. diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties index 6336854f4..f59005dfa 100755 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties @@ -536,3 +536,10 @@ ui.admin.applications.type.property_sheet.servlet_path=Servlet path ui.admin.applications.info.heading=About the application type ui.admin.applications.settings.singleton.no_setting_for=No settings for application {0} available. ui.admin.applications.settings.instance.no_setting_for=No settings for instance of application type {0} available. +ui.admin.applications.instances.link=Instances +ui.admin.applications.instances_table.col_primary_url=Primary URL +#Create new instance +ui.admin.applications.new_instance_form.title=Create new instance +ui.admin.applications.instance_table.heading=Instances +ui.admin.applications.new_instance.primary_url=Primary URL +ui.admin.applications.new_instance.primary_url.error.not_empty=The primary URL of an application instance can't be empty. diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties index 4763e7663..5aec9ccba 100755 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties @@ -527,3 +527,10 @@ ui.admin.applications.type.property_sheet.servlet_path=Servlet path ui.admin.applications.info.heading=About the application type ui.admin.applications.settings.singleton.no_setting_for=No settings for application {0} available. ui.admin.applications.settings.instance.no_setting_for=No settings for instance of application type {0} available. +ui.admin.applications.instances.link=Instances +ui.admin.applications.instances_table.col_primary_url=Primary URL +#Create new instance +ui.admin.applications.new_instance_form.title=Create new instance +ui.admin.applications.instance_table.heading=Instances +ui.admin.applications.new_instance.primary_url=Primary URL +ui.admin.applications.new_instance.primary_url.error.not_empty=The primary URL of an application instance can't be empty.