Refactor embedded localized string to JSON columns

Former-commit-id: 5abbc454a2
embedded-to-json
Jens Pelzetter 2020-05-17 17:07:43 +02:00
parent ff9031861f
commit a369979f79
23 changed files with 1781 additions and 1474 deletions

View File

@ -0,0 +1,104 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.librecms.contentsection.rs;
import org.librecms.contentsection.ContentItem;
import org.librecms.contentsection.ContentItemRepository;
import org.librecms.contentsection.ContentSection;
import org.librecms.contentsection.ContentSectionRepository;
import org.librecms.contentsection.Folder;
import org.librecms.contentsection.FolderRepository;
import java.util.Optional;
import javax.inject.Inject;
import javax.transaction.Transactional;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import static javax.ws.rs.core.MediaType.*;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@Path("/{content-section}/items/{path: .*}")
public class ContentItemController {
@Inject
private FolderRepository folderRepo;
@Inject
private ContentItemRepository itemRepo;
@Inject
private ContentSectionRepository sectionRepo;
@GET
@Path("/")
@Produces(APPLICATION_JSON)
@Transactional(Transactional.TxType.REQUIRED)
public ContentItem getContentItem(
@PathParam("content-section") final String sectionName,
@PathParam("path") final String path
) {
final String[] pathTokens = path.split("/");
final ContentSection section = sectionRepo
.findByLabel(sectionName)
.orElseThrow(
() -> new WebApplicationException(
String.format(
"ContentSection \"%s\" does not exist.",
sectionName),
Response.Status.NOT_FOUND
)
);
final Folder rootFolder = section.getRootDocumentsFolder();
final StringBuilder folderPathBuilder = new StringBuilder("/");
Folder folder = rootFolder;
for (int i = 0; i < pathTokens.length - 1; i++) {
final String pathToken = pathTokens[i];
folderPathBuilder.append(pathToken);
final Optional<Folder> result = folder
.getSubFolders()
.stream()
.filter(subFolder -> subFolder.getName().equals(pathToken))
.findAny();
if (result.isPresent()) {
folder = result.get();
} else {
throw new WebApplicationException(
String.format(
"Folder %s not found in ContentSection %s.",
folderPathBuilder.toString(),
sectionName
)
);
}
}
final String itemName = pathTokens[pathTokens.length - 1];
final ContentItem item = itemRepo
.findByNameInFolder(folder, itemName)
.orElseThrow(
() -> new WebApplicationException(
String.format(
"No ContentItem %s in folder %s of ContentSection %s.",
itemName,
folderPathBuilder.toString()
),
Response.Status.NOT_FOUND
)
);
return item;
}
}

View File

@ -38,6 +38,7 @@ public class ContentSectionsApplication extends Application{
classes.add(Assets.class);
classes.add(ContentItems.class);
classes.add(ContentItemController.class);
classes.add(ContentSections.class);
classes.add(Images.class);

View File

@ -0,0 +1,354 @@
/*
* Copyright (C) 2020 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 db.migrations.org.libreccm.ccm_core.pgsql;
import org.flywaydb.core.api.migration.BaseJavaMigration;
import org.flywaydb.core.api.migration.Context;
import java.io.StringWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.json.Json;
import javax.json.JsonObjectBuilder;
import javax.json.JsonWriter;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class V7_0_0_37__localized_string_embedded_to_json extends BaseJavaMigration {
private static final String[] ADD_COLUMN_STATEMENTS = new String[]{
"alter table CCM_CORE.CATEGORIES add column TITLE jsonb",
"alter table CCM_CORE.CATEGORIES add column DESCRIPTION jsonb",
"alter table CCM_CORE.CATEGORY_DOMAINS add column DESCRIPTION jsonb",
"alter table CCM_CORE.CATEGORY_DOMAINS add column TITLE jsonb",
"alter table CCM_ROLES add column DESCRIPTION jsonb",
"alter table CCM_CORE.FORMBUILDER_COMPONENTS add column DESCRIPTION jsonb",
"alter table CCM_CORE.FORMBUILDER_DATA_QUERIES add column DESCRIPTION jsonb",
"alter table CCM_CORE.FORMBUILDER_DATA_QUERIES add column QUERY_NAME jsonb",
"alter table CCM_CORE.FORMBUILDER_OPTIONS add column LABEL jsonb",
"alter table CCM_CORE.FORMBUILDER_PROCESS_LISTENERS add column DESCRIPTION jsonb",
"alter table CCM_CORE.FORMBUILDER_PROCESS_LISTENERS add column LISTENER_NAME jsonb",
"alter table CCM_CORE.PAGE_MODELS add column DESCRIPTION jsonb",
"alter table CCM_CORE.PAGE_MODELS add column TITLE jsonb",
"alter table CCM_CORE.RESOURCE_TYPES add column DESCRIPTION jsonb",
"alter table CCM_CORE.RESOURCES add column DESCRIPTION jsonb",
"alter table CCM_CORE.RESOURCES add column TITLE jsonb",
"alter table CCM_CORE.SETTINGS add column SETTING_VALUE_LOCALIZED_STRING jsonb",
"alter table CCM_CORE.WORKFLOW_TASKS add column DESCRIPTION jsonb",
"alter table CCM_CORE.WORKFLOW_TASKS add column LABEL jsonb",
"alter table CCM_CORE.WORKFLOWS add column DESCRIPTION jsonb",
"alter table CCM_CORE.WORKFLOWS add column NAME jsonb"
};
private static final int OBJECT_TABLE = 0;
private static final int LOCALIZED_STR_TABLE = 1;
private static final int OBJECT_ID_COL = 2;
private static final int VALUE_ID_COL = 3;
private static final int TARGET_COL = 4;
private static final String[][] MIGRATE = new String[][]{
new String[]{
"CCM_CORE.CATEGORIES",
"CCM_CORE.CATEGORY_TITLES",
"OBJECT_ID",
"OBJECT_ID",
"TITLE"
},
new String[]{
"CCM_CORE.CATEGORIES",
"CCM_CORE.CATEGORY_DESCRIPTIONS",
"OBJECT_ID",
"OBJECT_ID",
"DESCRIPTION"
},
new String[]{
"CCM_CORE.CATEGORY_DOMAINS",
"CCM_CORE.DOMAIN_TITLES",
"OBJECT_ID",
"OBJECT_ID",
"TITLE"
},
new String[]{
"CCM_CORE.CATEGORY_DOMAINS",
"CCM_CORE.DOMAIN_DESCRIPTIONS",
"OBJECT_ID",
"OBJECT_ID",
"DESCRIPTIONS"
},
new String[]{
"CCM_CORE.CCM_ROLES",
"CCM_CORE.ROLE_DESCRIPTIONS",
"ROLE_ID",
"ROLE_ID",
"DESCRIPTION"
},
new String[]{
"CCM_CORE.FORMBUILDER_COMPONENTS",
"CCM_CORE.FORMBUILDER_COMPONENT_DESCRIPTIONS",
"OBJECT_ID",
"OBJECT_ID",
"DESCRIPTION"
},
new String[]{
"CCM_CORE.FORMBUILDER_DATA_QUERIES",
"FORMBUILDER_DATA_QUERY_DESCRIPTIONS",
"OBJECT_ID",
"OBJECT_ID",
"DESCRIPTION"
},
new String[]{
"CCM_CORE.FORMBUILDER_DATA_QUERIES",
"FORMBUILDER_DATA_QUERY_NAMES",
"OBJECT_ID",
"OBJECT_ID",
"QUERY_NAME"
},
new String[]{
"CCM_CORE.FORMBUILDER_OPTIONS",
"FORMBUILDER_OPTION_LABELS",
"OBJECT_ID",
"OBJECT_ID",
"LABEL"
},
new String[]{
"CCM_CORE.FORMBUILDER_PROCESS_LISTENERS",
"FORMBUILDER_LISTENER_DESCRIPTIONS",
"OBJECT_ID",
"OBJECT_ID",
"DESCRIPTION"
},
new String[]{
"CCM_CORE.FORMBUILDER_PROCESS_LISTENERS",
"FORMBUILDER_LISTENER_NAMES",
"OBJECT_ID",
"OBJECT_ID",
"LISTENER_NAME"
},
new String[]{
"CCM_CORE.PAGE_MODELS",
"CCM_CORE.PAGE_MODEL_DESCRIPTIONS",
"PAGE_MODEL_ID",
"PAGE_MODEL_ID",
"DESCRIPTION"
},
new String[]{
"CCM_CORE.PAGE_MODELS",
"CCM_CORE.PAGE_MODEL_TITLES",
"PAGE_MODEL_ID",
"PAGE_MODEL_ID",
"TITLE"
},
new String[]{
"CCM_CORE.RESOURCE_TYPES",
"CCM_CORE.RESOURCE_TYPE_DESCRIPTIONS",
"RESOURCE_TYPE_ID",
"RESOURCE_TYPE_ID",
"DESCRIPTION"
},
new String[]{
"CCM_CORE.RESOURCES",
"CCM_CORE.RESOURCE_DESCRIPTIONS",
"OBJECT_ID", "OBJECT_ID",
"DESCRIPTION"
},
new String[]{
"CCM_CORE.RESOURCES",
"CCM_CORE.RESOURCE_TITLES",
"OBJECT_ID",
"OBJECT_ID",
"TITLE"
},
new String[]{
"CCM_CORE.SETTINGS",
"CCM_CORE.SETTINGS_L10N_STR_VALUES",
"SETTING_ID",
"ENTRY_ID",
"SETTING_VALUE_LOCALIZED_STRING"
},
new String[]{
"CCM_CORE.WORKFLOW_TASKS",
"CCM_CORE.WORKFLOW_TASK_DESCRIPTIONS",
"TASK_ID",
"TASK_ID",
"DESCRIPTION"
},
new String[]{
"CCM_CORE.WORKFLOW_TASKS",
"CCM_CORE.WORKFLOW_TASK_LABELS",
"TASK_ID",
"TASK_ID",
"LABEL"
},
new String[]{
"CCM_CORE.WORKFLOWS",
"CCM_CORE.WORKFLOW_DESCRIPTIONS",
"WORKFLOW_ID",
"WORKFLOW_ID",
"DESCRIPTION"
},
new String[]{
"CCM_CORE.WORKFLOWS",
"CCM_CORE.WORKFLOW_NAMES",
"WORKFLOW_ID",
"WORKFLOW_ID",
"NAME"
}
};
private static final String SELECT_IDS_QUERY_TEMPLATE = "select %s from %s";
private static final String SELECT_VALUES_QUERY_TEMPLATE
= "select locale, localized_value from %s where %s = ?";
private static final String SET_VALUES_QUERY_TEMPLATE
= "update %s set %s = ? where %s = ?";
private static final String[] DROP_TABLES = new String[]{
"CCM_CORE.CATEGORY_TITLES",
"CCM_CORE.CATEGORY_DESCRIPTIONS",
"CCM_CORE.DOMAIN_TITLES",
"CCM_CORE.DOMAIN_DESCRIPTIONS",
"CCM_CORE.ROLE_DESCRIPTIONS",
"CCM_CORE.FORMBUILDER_COMPONENT_DESCRIPTIONS",
"FORMBUILDER_DATA_QUERY_DESCRIPTIONS",
"FORMBUILDER_DATA_QUERY_NAMES",
"FORMBUILDER_OPTION_LABELS",
"FORMBUILDER_LISTENER_DESCRIPTIONS",
"FORMBUILDER_LISTENER_NAMES",
"CCM_CORE.PAGE_MODEL_DESCRIPTIONS",
"CCM_CORE.PAGE_MODEL_TITLES",
"CCM_CORE.RESOURCE_TYPE_DESCRIPTIONS",
"CCM_CORE.RESOURCE_DESCRIPTIONS",
"CCM_CORE.RESOURCE_TITLES",
"CCM_CORE.SETTINGS_L10N_STR_VALUES",
"CCM_CORE.WORKFLOW_TASK_DESCRIPTIONS",
"CCM_CORE.WORKFLOW_TASK_LABELS",
"CCM_CORE.WORKFLOW_DESCRIPTIONS",
"CCM_CORE.WORKFLOW_NAMES",};
private static final String DROP_TABLES_QUERY_TEMPLATE = "drop table %s";
@Override
public void migrate(final Context context) throws Exception {
final Connection connection = context.getConnection();
// Add columns for localized strings
for (final String addColStatement : ADD_COLUMN_STATEMENTS) {
try (PreparedStatement statement = connection.prepareStatement(
addColStatement
)) {
statement.execute();
}
}
for (final String[] migrate : MIGRATE) {
final String objectTable = migrate[OBJECT_TABLE];
final String localizedStringTable = migrate[LOCALIZED_STR_TABLE];
final String objectIdCol = migrate[OBJECT_ID_COL];
final String valueIdCol = migrate[VALUE_ID_COL];
final String targetCol = migrate[TARGET_COL];
final List<Long> objectIds = new ArrayList<>();
final String selectIdsQuerySql = String.format(
SELECT_IDS_QUERY_TEMPLATE,
objectIdCol,
objectTable
);
try (PreparedStatement stmt = connection.prepareStatement(
selectIdsQuerySql
);
ResultSet resultSet = stmt.executeQuery()) {
while (resultSet.next()) {
objectIds.add(resultSet.getLong(objectIdCol));
}
}
final String valuesQuerySql = String.format(
SELECT_VALUES_QUERY_TEMPLATE,
localizedStringTable,
valueIdCol
);
final String setValuesQuerySql = String.format(
SET_VALUES_QUERY_TEMPLATE,
objectTable,
targetCol,
objectIdCol
);
try (PreparedStatement selectValuesStmt = connection
.prepareStatement(valuesQuerySql);
PreparedStatement setValuesStmt = connection.prepareStatement(
setValuesQuerySql
)) {
for (final Long objectId : objectIds) {
selectValuesStmt.setLong(1, objectId);
final JsonObjectBuilder jsonObjBuilder = Json
.createObjectBuilder();
try (ResultSet resultSet = selectValuesStmt.executeQuery()) {
while (resultSet.next()) {
final String locale = resultSet.getString(
"locale"
);
final String localizedValue = resultSet.getString(
"localizedValue"
);
jsonObjBuilder.add(locale, localizedValue);
}
}
try (StringWriter strWriter = new StringWriter();
JsonWriter jsonWriter = Json.createWriter(strWriter)) {
jsonWriter.writeObject(jsonObjBuilder.build());
setValuesStmt.setString(1, strWriter.toString());
}
setValuesStmt.setLong(2, objectId);
setValuesStmt.execute();
setValuesStmt.clearParameters();
selectValuesStmt.clearParameters();
}
}
for (final String dropTable : DROP_TABLES) {
try(PreparedStatement stmt = connection.prepareStatement(
String.format(DROP_TABLES_QUERY_TEMPLATE, dropTable)
)) {
stmt.execute();
}
}
// SELECT object_id FROM ... order by object_id;
// for all object_id SELECT locale, localized_value FROM ... WHERE object_id = :object_id
// build json
// INSERT INTO ... WHERE object_id = :object_id
// Drop tables
}
}
}

View File

@ -40,6 +40,7 @@ import java.util.Objects;
import static org.libreccm.categorization.CategorizationConstants.CAT_XML_NS;
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.hibernate.annotations.Type;
import org.libreccm.imexport.Exportable;
import javax.persistence.AssociationOverride;
@ -77,59 +78,48 @@ import javax.persistence.Table;
@NamedQueries({
@NamedQuery(
name = "Category.topLevelCategories",
query = "SELECT c FROM Category c WHERE c.parentCategory IS NULL")
,
query = "SELECT c FROM Category c WHERE c.parentCategory IS NULL"),
@NamedQuery(
name = "Category.findByName",
query = "SELECT c FROM Category c WHERE c.name = :name")
,
query = "SELECT c FROM Category c WHERE c.name = :name"),
@NamedQuery(
name = "Category.findByUuid",
query = "SELECT c FROM Category c WHERE c.uuid = :uuid")
,
query = "SELECT c FROM Category c WHERE c.uuid = :uuid"),
@NamedQuery(
name = "Category.findParentCategory",
query = "SELECT c.parentCategory FROM Category c WHERE c = :category")
,
query = "SELECT c.parentCategory FROM Category c WHERE c = :category"),
@NamedQuery(
name = "Category.countAssignedCategories",
query = "SELECT COUNT(c) FROM Categorization c "
+ "WHERE c.categorizedObject = :object"
)
,
),
@NamedQuery(
name = "Category.isCategorized",
query = "SELECT (CASE WHEN COUNT(c) > 0 THEN true ELSE false END) "
+ "FROM Categorization c "
+ "WHERE c.categorizedObject = :object")
,
+ "WHERE c.categorizedObject = :object"),
@NamedQuery(
name = "Category.countObjects",
query = "SELECT COUNT(c) FROM Categorization c "
+ "WHERE c.category = :category")
,
+ "WHERE c.category = :category"),
@NamedQuery(
name = "Category.hasObjects",
query = "SELECT (CASE WHEN COUNT(c) > 0 THEN true ELSE false END) "
+ "FROM Categorization c "
+ "WHERE c.category = :category")
,
+ "WHERE c.category = :category"),
@NamedQuery(
name = "Category.countSubCategories",
query = "SELECT COUNT(c) FROM Category c "
+ "WHERE c.parentCategory =:category")
,
+ "WHERE c.parentCategory =:category"),
@NamedQuery(
name = "Category.hasSubCategories",
query = "SELECT (CASE WHEN COUNT(c) > 0 THEN true ELSE false END) "
+ "FROM Category c "
+ "WHERE c.parentCategory = :category")
,
+ "WHERE c.parentCategory = :category"),
@NamedQuery(
name = "Category.findByNameAndParent",
query = "SELECT c FROM Category c "
+ "WHERE c.name = :name AND c.parentCategory = :parent")
,
+ "WHERE c.name = :name AND c.parentCategory = :parent"),
@NamedQuery(
name = "Category.hasSubCategoryWithName",
query = "SELECT (CASE WHEN COUNT(c) > 0 THEN true ELSE False END) "
@ -174,28 +164,32 @@ public class Category extends CcmObject implements Serializable, Exportable {
/**
* The human readable and localisable title of the category.
*/
@Embedded
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "CATEGORY_TITLES",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "OBJECT_ID")}
))
// @Embedded
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "CATEGORY_TITLES",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "OBJECT_ID")}
// ))
@Column(name = "TITLE")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
@XmlElement(name = "title", namespace = CAT_XML_NS)
private LocalizedString title;
/**
* A localisable description of the category.
*/
@Embedded
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "CATEGORY_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "OBJECT_ID")}
))
// @Embedded
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "CATEGORY_DESCRIPTIONS",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "OBJECT_ID")}
// ))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
@XmlElement(name = "description", namespace = CAT_XML_NS)
private LocalizedString description;

View File

@ -142,9 +142,10 @@ public class CategoryTreeModelLite implements TreeModel {
return category.getName();
} else {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final CategoryTreeModelLiteController controller = cdiUtil
.findBean(CategoryTreeModelLiteController.class);
return controller.getTitle(category);
final GlobalizationHelper globalizationHelper = cdiUtil
.findBean(GlobalizationHelper.class);
return globalizationHelper
.getValueFromLocalizedString(category.getTitle());
}
}

View File

@ -40,6 +40,7 @@ import java.io.Serializable;
import static org.libreccm.categorization.CategorizationConstants.CAT_XML_NS;
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.hibernate.annotations.Type;
import org.libreccm.imexport.Exportable;
import java.util.ArrayList;
@ -160,26 +161,30 @@ public class Domain extends CcmObject implements Serializable, Exportable {
* A human readable title for the {@code Domain}. The title can be
* localised.
*/
@Embedded
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "DOMAIN_TITLES",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "OBJECT_ID")}))
// @Embedded
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "DOMAIN_TITLES",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "OBJECT_ID")}))
@Column(name = "TITLE")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
@XmlElement(name = "title", namespace = CAT_XML_NS)
private LocalizedString title;
/**
* A description of the domain. The description can be localised.
*/
@Embedded
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "DOMAIN_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "OBJECT_ID")}))
// @Embedded
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "DOMAIN_DESCRIPTIONS",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "OBJECT_ID")}))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
@XmlElement(name = "description", namespace = CAT_XML_NS)
private LocalizedString description;

View File

@ -23,13 +23,10 @@ import org.libreccm.l10n.LocalizedString;
import java.io.Serializable;
import java.util.Objects;
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.hibernate.annotations.Type;
import javax.persistence.AssociationOverride;
import javax.persistence.Embedded;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
/**
* A setting which stores a {@link LocalizedString} . This can be used for
@ -44,13 +41,15 @@ public class LocalizedStringSetting
private static final long serialVersionUID = 667750736151545279L;
@Embedded
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "SETTINGS_L10N_STR_VALUES",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "ENTRY_ID")}))
// @Embedded
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "SETTINGS_L10N_STR_VALUES",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "ENTRY_ID")}))
@Column(name = "SETTING_VALUE_LOCALIZED_STRING")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString value;
public LocalizedStringSetting() {

View File

@ -29,6 +29,7 @@ import java.io.Serializable;
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.hibernate.annotations.Type;
import org.libreccm.imexport.Exportable;
import java.util.ArrayList;
@ -82,25 +83,29 @@ public class Resource extends CcmObject implements Serializable, Exportable {
/**
* A localisable title for the {@code Resource}.
*/
@Embedded
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "RESOURCE_TITLES",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "OBJECT_ID")}))
// @Embedded
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "RESOURCE_TITLES",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "OBJECT_ID")}))
@Column(name = "TITLE")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString title;
/**
* A localisable description for the {@code Resource}.
*/
@Embedded
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "RESOURCE_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "OBJECT_ID")}))
// @Embedded
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "RESOURCE_DESCRIPTIONS",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "OBJECT_ID")}))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString description;
@ManyToOne

View File

@ -27,17 +27,14 @@ import java.util.Objects;
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.hibernate.annotations.Type;
import org.libreccm.imexport.Exportable;
import javax.persistence.AssociationOverride;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@ -87,13 +84,15 @@ public class ResourceType implements Serializable, Exportable {
@Column(name = "TITLE", length = 254, nullable = false)
private String title;
@Embedded
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "RESOURCE_TYPE_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "RESOURCE_TYPE_ID")}))
// @Embedded
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "RESOURCE_TYPE_DESCRIPTIONS",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "RESOURCE_TYPE_ID")}))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString description;
@Column(name = "WORKSPACE_APP")

View File

@ -21,7 +21,6 @@ package org.libreccm.formbuilder;
import org.libreccm.core.CcmObject;
import org.libreccm.l10n.LocalizedString;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
@ -29,6 +28,14 @@ import java.util.Objects;
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.hibernate.annotations.Type;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -46,13 +53,15 @@ public class Component extends CcmObject implements Serializable {
@Column(name = "ADMIN_NAME")
private String adminName;
@Embedded
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "FORMBUILDER_COMPONENT_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "COMPONENT_ID")}))
// @Embedded
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "FORMBUILDER_COMPONENT_DESCRIPTIONS",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "COMPONENT_ID")}))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString description;
@Column(name = "ATTRIBUTE_STRING")

View File

@ -20,12 +20,17 @@ package org.libreccm.formbuilder;
import org.libreccm.l10n.LocalizedString;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Objects;
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.hibernate.annotations.Type;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -39,12 +44,14 @@ public class Option extends Component implements Serializable {
@Column(name = "PARAMETER_VALUE")
private String parameterValue;
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "FORMBUILDER_OPTION_LABELS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "OPTION_ID")}))
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "FORMBUILDER_OPTION_LABELS",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "OPTION_ID")}))
@Column(name = "LABEL")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString label;
public String getParameterValue() {

View File

@ -21,12 +21,20 @@ package org.libreccm.formbuilder;
import org.libreccm.core.CcmObject;
import org.libreccm.l10n.LocalizedString;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Objects;
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.hibernate.annotations.Type;
import javax.persistence.AssociationOverride;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.Table;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -40,22 +48,26 @@ public class PersistentDataQuery extends CcmObject implements Serializable {
@Column(name = "QUERY_ID")
private String queryId;
@AssociationOverride(
name = "values",
joinTable = @JoinTable(
name = "FORMBUILDER_DATA_QUERY_NAMES",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "DATA_QUERY_ID")}))
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(
// name = "FORMBUILDER_DATA_QUERY_NAMES",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "DATA_QUERY_ID")}))
@Column(name = "QUERY_NAME")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString name;
@AssociationOverride(
name = "values",
joinTable = @JoinTable(
name = "FORMBUILDER_DATA_QUERY_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "DATA_QUERY_ID")}))
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(
// name = "FORMBUILDER_DATA_QUERY_DESCRIPTIONS",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "DATA_QUERY_ID")}))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString description;
public PersistentDataQuery() {

View File

@ -26,11 +26,10 @@ import java.util.Objects;
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import javax.persistence.AssociationOverride;
import org.hibernate.annotations.Type;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@ -44,23 +43,26 @@ public class ProcessListener extends CcmObject implements Serializable {
private static final long serialVersionUID = -3029184333026605708L;
@AssociationOverride(
name = "values",
joinTable = @JoinTable(
name = "FORMBUILDER_PROCESS_LISTENER_NAMES",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "PROCESS_LISTENER_ID")}))
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(
// name = "FORMBUILDER_PROCESS_LISTENER_NAMES",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "PROCESS_LISTENER_ID")}))
@Column(name = "LISTENER_NAME")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString name;
@AssociationOverride(
name = "values",
joinTable = @JoinTable(
name = "FORMBUILDER_PROCESS_LISTENER_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "PROCESS_LISTENER_ID")}))
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(
// name = "FORMBUILDER_PROCESS_LISTENER_DESCRIPTIONS",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "PROCESS_LISTENER_ID")}))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString description;
@Column(name = "LISTENER_CLASS")

View File

@ -0,0 +1,36 @@
/*
* Copyright (C) 2020 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.libreccm.hibernate.dialects;
import org.hibernate.dialect.H2Dialect;
import java.sql.Types;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class LibreCcmH2Dialect extends H2Dialect {
public LibreCcmH2Dialect() {
super();
super.registerColumnType(Types.JAVA_OBJECT, "json");
}
}

View File

@ -0,0 +1,36 @@
/*
* Copyright (C) 2020 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.libreccm.hibernate.dialects;
import org.hibernate.dialect.PostgreSQL9Dialect;
import java.sql.Types;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class LibreCcmPgSql9Dialect extends PostgreSQL9Dialect {
public LibreCcmPgSql9Dialect() {
super();
super.registerColumnType(Types.JAVA_OBJECT, "jsonb");
}
}

View File

@ -19,22 +19,14 @@
package org.libreccm.l10n;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.hibernate.annotations.Type;
import org.hibernate.search.annotations.Field;
import org.libreccm.l10n.jaxb.LocalizedStringValuesAdapter;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Embeddable;
import javax.persistence.FetchType;
import javax.persistence.Lob;
import javax.persistence.MapKeyColumn;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
@ -45,6 +37,10 @@ import java.util.Set;
import static org.libreccm.l10n.L10NConstants.L10N_XML_NS;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
/**
* A helper class for localisable string properties. This class is declared as
* embeddable, so that it can be used in every other entity. The localised
@ -53,7 +49,7 @@ import static org.libreccm.l10n.L10NConstants.L10N_XML_NS;
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@Embeddable
//@Embeddable
@XmlRootElement(name = "localized-string", namespace = L10N_XML_NS)
@XmlAccessorType(XmlAccessType.FIELD)
public class LocalizedString implements Serializable {
@ -63,13 +59,13 @@ public class LocalizedString implements Serializable {
/**
* The localised values of the string.
*/
@ElementCollection(fetch = FetchType.LAZY)
@MapKeyColumn(name = "LOCALE")
@Column(name = "LOCALIZED_VALUE")
@Basic
@Lob
@Type(type = "org.hibernate.type.TextType")
@Field
// @ElementCollection(fetch = FetchType.LAZY)
// @MapKeyColumn(name = "LOCALE")
// @Column(name = "LOCALIZED_VALUE")
// @Basic
// @Lob
// @Type(type = "org.hibernate.type.TextType")
// @Field
@XmlElement(name = "values", namespace = L10N_XML_NS)
@XmlJavaTypeAdapter(LocalizedStringValuesAdapter.class)
private Map<Locale, String> values;
@ -202,6 +198,41 @@ public class LocalizedString implements Serializable {
return obj instanceof LocalizedString;
}
public static LocalizedString fromJson(final JsonObject jsonObject) {
final LocalizedString localizedString = new LocalizedString();
jsonObject
.entrySet()
.stream()
.forEach(
entry -> localizedString.addValue(
new Locale(entry.getKey()),
jsonObject.getString(entry.getKey())
)
);
return localizedString;
}
public JsonObjectBuilder buildJson() {
final JsonObjectBuilder builder = Json.createObjectBuilder();
values
.entrySet()
.stream()
.forEach(
entry -> builder.add(
entry.getKey().toString(), entry.getValue()
)
);
return builder;
}
public JsonObject toJson() {
return buildJson().build();
}
@Override
public String toString() {
return String.format(

View File

@ -0,0 +1,155 @@
/*
* Copyright (C) 2020 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.libreccm.l10n;
import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.usertype.UserType;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.io.StringReader;
import java.io.StringWriter;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Objects;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonWriter;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class LocalizedStringType implements UserType {
@Override
public int[] sqlTypes() {
return new int[]{Types.JAVA_OBJECT};
}
@Override
public Class<LocalizedString> returnedClass() {
return LocalizedString.class;
}
@Override
public boolean equals(final Object obj1, final Object obj2)
throws HibernateException {
return Objects.equals(obj1, obj2);
}
@Override
public int hashCode(final Object obj) throws HibernateException {
return Objects.hashCode(obj);
}
@Override
public Object nullSafeGet(
final ResultSet resultSet,
final String[] names,
final SharedSessionContractImplementor session,
final Object owner
) throws HibernateException, SQLException {
final String cellContent = resultSet.getString(names[0]);
if (cellContent == null) {
return null;
}
return LocalizedString.fromJson(
Json.createReader(new StringReader(cellContent)).readObject()
);
}
@Override
public void nullSafeSet(
final PreparedStatement statement,
final Object value,
final int index,
final SharedSessionContractImplementor session
) throws HibernateException, SQLException {
final JsonObject jsonObject = ((LocalizedString) value).toJson();
try (StringWriter strWriter = new StringWriter();
JsonWriter jsonWriter = Json.createWriter(strWriter)) {
jsonWriter.writeObject(jsonObject);
statement.setObject(index, strWriter.toString(), Types.OTHER);
} catch (IOException ex) {
throw new HibernateException(ex);
}
}
@Override
public Object deepCopy(final Object value) throws HibernateException {
final byte[] serialized;
try (ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos)) {
oos.writeObject(value);
oos.flush();
serialized = bos.toByteArray();
} catch (IOException ex) {
throw new HibernateException(ex);
}
final Object obj;
try (final ByteArrayInputStream bais = new ByteArrayInputStream(
serialized
);
final ObjectInputStream ois = new ObjectInputStream(bais);) {
obj = ois.readObject();
} catch (IOException | ClassNotFoundException ex) {
throw new HibernateException(ex);
}
return obj;
}
@Override
public boolean isMutable() {
return true;
}
@Override
public Serializable disassemble(final Object value)
throws HibernateException {
return (Serializable) deepCopy(value);
}
@Override
public Object assemble(final Serializable cached, final Object owner) throws
HibernateException {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Object replace(
final Object original,
final Object target,
final Object owner
) throws HibernateException {
return deepCopy(original);
}
}

View File

@ -18,6 +18,7 @@
*/
package org.libreccm.pagemodel;
import org.hibernate.annotations.Type;
import org.libreccm.core.CoreConstants;
import org.libreccm.l10n.LocalizedString;
import org.libreccm.web.CcmApplication;
@ -225,27 +226,31 @@ public class PageModel implements Serializable {
* The localised title of this {@code PageModel} (shown in the
* administration UI),
*/
@Embedded
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "PAGE_MODEL_TITLES",
schema = CoreConstants.DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "PAGE_MODEL_ID")
}))
// @Embedded
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "PAGE_MODEL_TITLES",
// schema = CoreConstants.DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "PAGE_MODEL_ID")
// }))
@Column(name = "TITLE")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString title;
/**
* A description of this {@code PageModel} describing its purpose.
*/
@Embedded
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "PAGE_MODEL_DESCRIPTIONS",
schema = CoreConstants.DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "PAGE_MODEL_ID")
}))
// @Embedded
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "PAGE_MODEL_DESCRIPTIONS",
// schema = CoreConstants.DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "PAGE_MODEL_ID")
// }))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString description;
/**

View File

@ -29,6 +29,7 @@ import org.libreccm.workflow.TaskAssignment;
import static org.libreccm.core.CoreConstants.CORE_XML_NS;
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.hibernate.annotations.Type;
import org.libreccm.imexport.Exportable;
import java.io.Serializable;
@ -182,14 +183,16 @@ public class Role implements Serializable, Exportable {
/**
* An optional description for a role.
*/
@Embedded
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "ROLE_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "ROLE_ID")
}))
// @Embedded
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "ROLE_DESCRIPTIONS",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "ROLE_ID")
// }))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
@XmlElement(name = "description", namespace = CORE_XML_NS)
private LocalizedString description = new LocalizedString();

View File

@ -36,6 +36,8 @@ import java.util.Objects;
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.hibernate.annotations.Type;
import javax.persistence.AssociationOverride;
import javax.persistence.Column;
import javax.persistence.Embedded;
@ -147,25 +149,29 @@ public class Task implements Identifiable, Serializable {
/**
* A human readable, localisable label for the task.
*/
@Embedded
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "WORKFLOW_TASK_LABELS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "TASK_ID")}))
// @Embedded
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "WORKFLOW_TASK_LABELS",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "TASK_ID")}))
@Column(name = "LABEL")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString label;
/**
* A description of the task.
*/
@Embedded
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "WORKFLOW_TASK_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "TASK_ID")}))
// @Embedded
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "WORKFLOW_TASK_DESCRIPTIONS",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "TASK_ID")}))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString description;
/**

View File

@ -56,6 +56,7 @@ import java.util.Objects;
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.hibernate.annotations.Type;
import org.libreccm.imexport.Exportable;
/**
@ -116,26 +117,30 @@ public class Workflow implements Identifiable, Serializable, Exportable {
/**
* Human readable name of the workflow.
*/
@Embedded
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "WORKFLOW_NAMES",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "WORKFLOW_ID")}))
// @Embedded
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "WORKFLOW_NAMES",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "WORKFLOW_ID")}))
@Column(name = "NAME")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString name = new LocalizedString();
/**
* Description of the workflow.
*/
@Embedded
@AssociationOverride(
name = "values",
joinTable = @JoinTable(name = "WORKFLOW_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "WORKFLOW_ID")
}))
// @Embedded
// @AssociationOverride(
// name = "values",
// joinTable = @JoinTable(name = "WORKFLOW_DESCRIPTIONS",
// schema = DB_SCHEMA,
// joinColumns = {
// @JoinColumn(name = "WORKFLOW_ID")
// }))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString description = new LocalizedString();
/**

View File

@ -24,8 +24,10 @@
create table CCM_CORE.CATEGORIES (
ABSTRACT_CATEGORY boolean,
CATEGORY_ORDER bigint,
DESCRIPTION json,
ENABLED boolean,
NAME varchar(255) not null,
TITLE json,
UNIQUE_ID varchar(255),
VISIBLE boolean,
OBJECT_ID bigint not null,
@ -45,16 +47,11 @@
primary key (CATEGORIZATION_ID)
);
create table CCM_CORE.CATEGORY_DESCRIPTIONS (
OBJECT_ID bigint not null,
LOCALIZED_VALUE varchar(2147483647),
LOCALE varchar(255) not null,
primary key (OBJECT_ID, LOCALE)
);
create table CCM_CORE.CATEGORY_DOMAINS (
DESCRIPTION json,
DOMAIN_KEY varchar(255) not null,
RELEASED timestamp,
TITLE json,
URI varchar(1024),
VERSION varchar(255),
OBJECT_ID bigint not null,
@ -62,13 +59,6 @@
primary key (OBJECT_ID)
);
create table CCM_CORE.CATEGORY_TITLES (
OBJECT_ID bigint not null,
LOCALIZED_VALUE varchar(2147483647),
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),
@ -94,6 +84,7 @@
create table CCM_CORE.CCM_ROLES (
ROLE_ID bigint not null,
DESCRIPTION json,
NAME varchar(512) not null,
UUID varchar(255) not null,
primary key (ROLE_ID)
@ -111,13 +102,6 @@
primary key (OBJECT_ID)
);
create table CCM_CORE.DOMAIN_DESCRIPTIONS (
OBJECT_ID bigint not null,
LOCALIZED_VALUE varchar(2147483647),
LOCALE varchar(255) not null,
primary key (OBJECT_ID, LOCALE)
);
create table CCM_CORE.DOMAIN_OWNERSHIPS (
OWNERSHIP_ID bigint not null,
CONTEXT varchar(255),
@ -129,25 +113,12 @@
primary key (OWNERSHIP_ID)
);
create table CCM_CORE.DOMAIN_TITLES (
OBJECT_ID bigint not null,
LOCALIZED_VALUE varchar(2147483647),
LOCALE varchar(255) not null,
primary key (OBJECT_ID, LOCALE)
);
create table CCM_CORE.FORMBUILDER_COMPONENT_DESCRIPTIONS (
COMPONENT_ID bigint not null,
LOCALIZED_VALUE varchar(2147483647),
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,
DESCRIPTION json,
SELECTED boolean,
OBJECT_ID bigint not null,
parentComponent_OBJECT_ID bigint,
@ -176,25 +147,13 @@
);
create table CCM_CORE.FORMBUILDER_DATA_QUERIES (
DESCRIPTION json,
NAME json,
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 varchar(2147483647),
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 varchar(2147483647),
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,
@ -225,35 +184,17 @@
primary key (OBJECT_ID)
);
create table CCM_CORE.FORMBUILDER_OPTION_LABELS (
OPTION_ID bigint not null,
LOCALIZED_VALUE varchar(2147483647),
LOCALE varchar(255) not null,
primary key (OPTION_ID, LOCALE)
);
create table CCM_CORE.FORMBUILDER_OPTIONS (
LABEL json,
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 varchar(2147483647),
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 varchar(2147483647),
LOCALE varchar(255) not null,
primary key (PROCESS_LISTENER_ID, LOCALE)
);
create table CCM_CORE.FORMBUILDER_PROCESS_LISTENERS (
DESCRIPTION json,
LISTENER_CLASS varchar(255),
NAME json,
PROCESS_LISTENER_ORDER bigint,
OBJECT_ID bigint not null,
formSection_OBJECT_ID bigint,
@ -415,25 +356,13 @@
primary key (CONTAINER_ID)
);
create table CCM_CORE.PAGE_MODEL_DESCRIPTIONS (
PAGE_MODEL_ID bigint not null,
LOCALIZED_VALUE varchar(2147483647),
LOCALE varchar(255) not null,
primary key (PAGE_MODEL_ID, LOCALE)
);
create table CCM_CORE.PAGE_MODEL_TITLES (
PAGE_MODEL_ID bigint not null,
LOCALIZED_VALUE varchar(2147483647),
LOCALE varchar(255) not null,
primary key (PAGE_MODEL_ID, LOCALE)
);
create table CCM_CORE.PAGE_MODELS (
PAGE_MODEL_ID bigint not null,
DESCRIPTION json,
LAST_MODIFIED timestamp,
MODEL_UUID varchar(255) not null,
NAME varchar(255),
TITLE json,
TYPE varchar(255) not null,
UUID varchar(255) not null,
VERSION varchar(255) not null,
@ -488,29 +417,9 @@
primary key (QUEUE_ITEM_ID)
);
create table CCM_CORE.RESOURCE_DESCRIPTIONS (
OBJECT_ID bigint not null,
LOCALIZED_VALUE varchar(2147483647),
LOCALE varchar(255) not null,
primary key (OBJECT_ID, LOCALE)
);
create table CCM_CORE.RESOURCE_TITLES (
OBJECT_ID bigint not null,
LOCALIZED_VALUE varchar(2147483647),
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 varchar(2147483647),
LOCALE varchar(255) not null,
primary key (RESOURCE_TYPE_ID, LOCALE)
);
create table CCM_CORE.RESOURCE_TYPES (
RESOURCE_TYPE_ID bigint not null,
DESCRIPTION json,
SINGLETON boolean,
TITLE varchar(254) not null,
UUID varchar(255) not null,
@ -522,19 +431,14 @@
create table CCM_CORE.RESOURCES (
CREATED timestamp,
DESCRIPTION json,
TITLE json,
OBJECT_ID bigint not null,
parent_OBJECT_ID bigint,
resourceType_RESOURCE_TYPE_ID bigint,
primary key (OBJECT_ID)
);
create table CCM_CORE.ROLE_DESCRIPTIONS (
ROLE_ID bigint not null,
LOCALIZED_VALUE varchar(2147483647),
LOCALE varchar(255) not null,
primary key (ROLE_ID, LOCALE)
);
create table CCM_CORE.ROLE_MEMBERSHIPS (
MEMBERSHIP_ID bigint not null,
UUID varchar(255) not null,
@ -548,11 +452,12 @@
SETTING_ID bigint not null,
CONFIGURATION_CLASS varchar(512) not null,
NAME varchar(512) not null,
SETTING_VALUE_DOUBLE double,
SETTING_VALUE_BIG_DECIMAL decimal(19,2),
SETTING_VALUE json,
SETTING_VALUE_BOOLEAN boolean,
SETTING_VALUE_LONG bigint,
SETTING_VALUE_STRING varchar(1024),
SETTING_VALUE_DOUBLE double,
SETTING_VALUE_BIG_DECIMAL decimal(19,2),
primary key (SETTING_ID)
);
@ -561,13 +466,6 @@
value varchar(255)
);
create table CCM_CORE.SETTINGS_L10N_STR_VALUES (
ENTRY_ID bigint not null,
LOCALIZED_VALUE varchar(2147483647),
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)
@ -697,20 +595,6 @@
primary key (TASK_ID)
);
create table CCM_CORE.WORKFLOW_DESCRIPTIONS (
WORKFLOW_ID bigint not null,
LOCALIZED_VALUE varchar(2147483647),
LOCALE varchar(255) not null,
primary key (WORKFLOW_ID, LOCALE)
);
create table CCM_CORE.WORKFLOW_NAMES (
WORKFLOW_ID bigint not null,
LOCALIZED_VALUE varchar(2147483647),
LOCALE varchar(255) not null,
primary key (WORKFLOW_ID, LOCALE)
);
create table CCM_CORE.WORKFLOW_TASK_ASSIGNMENTS (
TASK_ASSIGNMENT_ID bigint not null,
UUID varchar(255) not null,
@ -736,23 +620,11 @@
primary key (TASK_DEPENDENCY_ID)
);
create table CCM_CORE.WORKFLOW_TASK_DESCRIPTIONS (
TASK_ID bigint not null,
LOCALIZED_VALUE varchar(2147483647),
LOCALE varchar(255) not null,
primary key (TASK_ID, LOCALE)
);
create table CCM_CORE.WORKFLOW_TASK_LABELS (
TASK_ID bigint not null,
LOCALIZED_VALUE varchar(2147483647),
LOCALE varchar(255) not null,
primary key (TASK_ID, LOCALE)
);
create table CCM_CORE.WORKFLOW_TASKS (
TASK_ID bigint not null,
ACTIVE boolean,
DESCRIPTION json,
LABEL json,
TASK_STATE varchar(512),
UUID varchar(255) not null,
WORKFLOW_ID bigint,
@ -763,6 +635,8 @@
WORKFLOW_ID bigint not null,
abstract_workflow boolean,
ACTIVE boolean,
DESCRIPTION json,
NAME json,
WORKFLOW_STATE varchar(255),
TASKS_STATE varchar(255),
UUID varchar(255) not null,
@ -830,7 +704,7 @@
alter table CCM_CORE.WORKFLOWS
add constraint UK_o113id7d1cxql0edsrohlnn9x unique (UUID);
create sequence hibernate_sequence start with 100000 increment by 1;
create sequence hibernate_sequence start with 1 increment by 1;
alter table CCM_CORE.APPLICATIONS
add constraint FKatcp9ij6mbkx0nfeig1o6n3lm
@ -862,11 +736,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
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)
@ -877,11 +746,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
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)
@ -902,11 +766,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
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)
@ -917,16 +776,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
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)
@ -957,16 +806,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
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)
@ -992,26 +831,11 @@ create sequence hibernate_sequence start with 100000 increment by 1;
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)
@ -1137,16 +961,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
foreign key (STYLE_ID)
references CCM_CORE.STYLES;
alter table CCM_CORE.PAGE_MODEL_DESCRIPTIONS
add constraint FKcc5d6eqxu1369k8ycyyt6vn3e
foreign key (PAGE_MODEL_ID)
references CCM_CORE.PAGE_MODELS;
alter table CCM_CORE.PAGE_MODEL_TITLES
add constraint FKj14q9911yhd4js9p6rs21rwjf
foreign key (PAGE_MODEL_ID)
references CCM_CORE.PAGE_MODELS;
alter table CCM_CORE.PAGE_MODELS
add constraint FKk2lihllrxj89mn3tqv43amafe
foreign key (APPLICATION_ID)
@ -1197,21 +1011,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
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)
@ -1227,11 +1026,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
foreign key (OBJECT_ID)
references CCM_CORE.CCM_OBJECTS;
alter table CCM_CORE.ROLE_DESCRIPTIONS
add constraint FKo09bh4j3k3k0ph3awvjwx31ft
foreign key (ROLE_ID)
references CCM_CORE.CCM_ROLES;
alter table CCM_CORE.ROLE_MEMBERSHIPS
add constraint FK9m88ywi7rcin7b7jrgh53emrq
foreign key (MEMBER_ID)
@ -1247,11 +1041,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
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)
@ -1352,16 +1141,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
foreign key (TASK_ID)
references CCM_CORE.WORKFLOW_TASKS;
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_ASSIGNMENTS
add constraint FKpq4paqtfbi5erhh98wl1ja005
foreign key (ROLE_ID)
@ -1392,16 +1171,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
foreign key (BLOCKING_TASK_ID)
references CCM_CORE.WORKFLOW_TASKS;
alter table CCM_CORE.WORKFLOW_TASK_DESCRIPTIONS
add constraint FKeb7mqbdx3bk7t01vo7kp2hpf
foreign key (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)

View File

@ -18,8 +18,10 @@
create table CCM_CORE.CATEGORIES (
ABSTRACT_CATEGORY boolean,
CATEGORY_ORDER int8,
DESCRIPTION jsonb,
ENABLED boolean,
NAME varchar(255) not null,
TITLE jsonb,
UNIQUE_ID varchar(255),
VISIBLE boolean,
OBJECT_ID int8 not null,
@ -39,16 +41,11 @@
primary key (CATEGORIZATION_ID)
);
create table CCM_CORE.CATEGORY_DESCRIPTIONS (
OBJECT_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (OBJECT_ID, LOCALE)
);
create table CCM_CORE.CATEGORY_DOMAINS (
DESCRIPTION jsonb,
DOMAIN_KEY varchar(255) not null,
RELEASED timestamp,
TITLE jsonb,
URI varchar(1024),
VERSION varchar(255),
OBJECT_ID int8 not null,
@ -56,13 +53,6 @@
primary key (OBJECT_ID)
);
create table CCM_CORE.CATEGORY_TITLES (
OBJECT_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (OBJECT_ID, LOCALE)
);
create table CCM_CORE.CCM_OBJECTS (
OBJECT_ID int8 not null,
DISPLAY_NAME varchar(255),
@ -88,6 +78,7 @@
create table CCM_CORE.CCM_ROLES (
ROLE_ID int8 not null,
DESCRIPTION jsonb,
NAME varchar(512) not null,
UUID varchar(255) not null,
primary key (ROLE_ID)
@ -105,13 +96,6 @@
primary key (OBJECT_ID)
);
create table CCM_CORE.DOMAIN_DESCRIPTIONS (
OBJECT_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (OBJECT_ID, LOCALE)
);
create table CCM_CORE.DOMAIN_OWNERSHIPS (
OWNERSHIP_ID int8 not null,
CONTEXT varchar(255),
@ -123,25 +107,12 @@
primary key (OWNERSHIP_ID)
);
create table CCM_CORE.DOMAIN_TITLES (
OBJECT_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (OBJECT_ID, LOCALE)
);
create table CCM_CORE.FORMBUILDER_COMPONENT_DESCRIPTIONS (
COMPONENT_ID int8 not null,
LOCALIZED_VALUE text,
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 int8,
DESCRIPTION jsonb,
SELECTED boolean,
OBJECT_ID int8 not null,
parentComponent_OBJECT_ID int8,
@ -170,25 +141,13 @@
);
create table CCM_CORE.FORMBUILDER_DATA_QUERIES (
DESCRIPTION jsonb,
QUERY_NAME jsonb,
QUERY_ID varchar(255),
OBJECT_ID int8 not null,
primary key (OBJECT_ID)
);
create table CCM_CORE.FORMBUILDER_DATA_QUERY_DESCRIPTIONS (
DATA_QUERY_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (DATA_QUERY_ID, LOCALE)
);
create table CCM_CORE.FORMBUILDER_DATA_QUERY_NAMES (
DATA_QUERY_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (DATA_QUERY_ID, LOCALE)
);
create table CCM_CORE.FORMBUILDER_FORMSECTIONS (
FORMSECTION_ACTION varchar(255),
OBJECT_ID int8 not null,
@ -219,35 +178,17 @@
primary key (OBJECT_ID)
);
create table CCM_CORE.FORMBUILDER_OPTION_LABELS (
OPTION_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (OPTION_ID, LOCALE)
);
create table CCM_CORE.FORMBUILDER_OPTIONS (
LABEL jsonb,
PARAMETER_VALUE varchar(255),
OBJECT_ID int8 not null,
primary key (OBJECT_ID)
);
create table CCM_CORE.FORMBUILDER_PROCESS_LISTENER_DESCRIPTIONS (
PROCESS_LISTENER_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (PROCESS_LISTENER_ID, LOCALE)
);
create table CCM_CORE.FORMBUILDER_PROCESS_LISTENER_NAMES (
PROCESS_LISTENER_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (PROCESS_LISTENER_ID, LOCALE)
);
create table CCM_CORE.FORMBUILDER_PROCESS_LISTENERS (
DESCRIPTION jsonb,
LISTENER_CLASS varchar(255),
LISTENER_NAME jsonb,
PROCESS_LISTENER_ORDER int8,
OBJECT_ID int8 not null,
formSection_OBJECT_ID int8,
@ -409,25 +350,13 @@
primary key (CONTAINER_ID)
);
create table CCM_CORE.PAGE_MODEL_DESCRIPTIONS (
PAGE_MODEL_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (PAGE_MODEL_ID, LOCALE)
);
create table CCM_CORE.PAGE_MODEL_TITLES (
PAGE_MODEL_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (PAGE_MODEL_ID, LOCALE)
);
create table CCM_CORE.PAGE_MODELS (
PAGE_MODEL_ID int8 not null,
DESCRIPTION jsonb,
LAST_MODIFIED timestamp,
MODEL_UUID varchar(255) not null,
NAME varchar(255),
TITLE jsonb,
TYPE varchar(255) not null,
UUID varchar(255) not null,
VERSION varchar(255) not null,
@ -482,29 +411,9 @@
primary key (QUEUE_ITEM_ID)
);
create table CCM_CORE.RESOURCE_DESCRIPTIONS (
OBJECT_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (OBJECT_ID, LOCALE)
);
create table CCM_CORE.RESOURCE_TITLES (
OBJECT_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (OBJECT_ID, LOCALE)
);
create table CCM_CORE.RESOURCE_TYPE_DESCRIPTIONS (
RESOURCE_TYPE_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (RESOURCE_TYPE_ID, LOCALE)
);
create table CCM_CORE.RESOURCE_TYPES (
RESOURCE_TYPE_ID int8 not null,
DESCRIPTION jsonb,
SINGLETON boolean,
TITLE varchar(254) not null,
UUID varchar(255) not null,
@ -516,19 +425,14 @@
create table CCM_CORE.RESOURCES (
CREATED timestamp,
DESCRIPTION jsonb,
TITLE jsonb,
OBJECT_ID int8 not null,
parent_OBJECT_ID int8,
resourceType_RESOURCE_TYPE_ID int8,
primary key (OBJECT_ID)
);
create table CCM_CORE.ROLE_DESCRIPTIONS (
ROLE_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (ROLE_ID, LOCALE)
);
create table CCM_CORE.ROLE_MEMBERSHIPS (
MEMBERSHIP_ID int8 not null,
UUID varchar(255) not null,
@ -542,11 +446,12 @@
SETTING_ID int8 not null,
CONFIGURATION_CLASS varchar(512) not null,
NAME varchar(512) not null,
SETTING_VALUE_DOUBLE float8,
SETTING_VALUE_BIG_DECIMAL numeric(19, 2),
SETTING_VALUE_LOCALIZED_STRING jsonb,
SETTING_VALUE_BOOLEAN boolean,
SETTING_VALUE_LONG int8,
SETTING_VALUE_STRING varchar(1024),
SETTING_VALUE_DOUBLE float8,
SETTING_VALUE_BIG_DECIMAL numeric(19, 2),
primary key (SETTING_ID)
);
@ -555,13 +460,6 @@
value varchar(255)
);
create table CCM_CORE.SETTINGS_L10N_STR_VALUES (
ENTRY_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (ENTRY_ID, LOCALE)
);
create table CCM_CORE.SETTINGS_STRING_LIST (
LIST_ID int8 not null,
value varchar(255)
@ -691,20 +589,6 @@
primary key (TASK_ID)
);
create table CCM_CORE.WORKFLOW_DESCRIPTIONS (
WORKFLOW_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (WORKFLOW_ID, LOCALE)
);
create table CCM_CORE.WORKFLOW_NAMES (
WORKFLOW_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (WORKFLOW_ID, LOCALE)
);
create table CCM_CORE.WORKFLOW_TASK_ASSIGNMENTS (
TASK_ASSIGNMENT_ID int8 not null,
UUID varchar(255) not null,
@ -730,23 +614,11 @@
primary key (TASK_DEPENDENCY_ID)
);
create table CCM_CORE.WORKFLOW_TASK_DESCRIPTIONS (
TASK_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (TASK_ID, LOCALE)
);
create table CCM_CORE.WORKFLOW_TASK_LABELS (
TASK_ID int8 not null,
LOCALIZED_VALUE text,
LOCALE varchar(255) not null,
primary key (TASK_ID, LOCALE)
);
create table CCM_CORE.WORKFLOW_TASKS (
TASK_ID int8 not null,
ACTIVE boolean,
DESCRIPTION jsonb,
LABEL jsonb,
TASK_STATE varchar(512),
UUID varchar(255) not null,
WORKFLOW_ID int8,
@ -757,6 +629,8 @@
WORKFLOW_ID int8 not null,
abstract_workflow boolean,
ACTIVE boolean,
DESCRIPTION jsonb,
NAME jsonb,
WORKFLOW_STATE varchar(255),
TASKS_STATE varchar(255),
UUID varchar(255) not null,
@ -824,7 +698,7 @@
alter table CCM_CORE.WORKFLOWS
add constraint UK_o113id7d1cxql0edsrohlnn9x unique (UUID);
create sequence hibernate_sequence start 100000 increment 1;
create sequence hibernate_sequence start 1 increment 1;
alter table CCM_CORE.APPLICATIONS
add constraint FKatcp9ij6mbkx0nfeig1o6n3lm
@ -856,11 +730,6 @@ create sequence hibernate_sequence start 100000 increment 1;
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)
@ -871,11 +740,6 @@ create sequence hibernate_sequence start 100000 increment 1;
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)
@ -896,11 +760,6 @@ create sequence hibernate_sequence start 100000 increment 1;
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)
@ -911,16 +770,6 @@ create sequence hibernate_sequence start 100000 increment 1;
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)
@ -951,16 +800,6 @@ create sequence hibernate_sequence start 100000 increment 1;
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)
@ -986,26 +825,11 @@ create sequence hibernate_sequence start 100000 increment 1;
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)
@ -1131,16 +955,6 @@ create sequence hibernate_sequence start 100000 increment 1;
foreign key (STYLE_ID)
references CCM_CORE.STYLES;
alter table CCM_CORE.PAGE_MODEL_DESCRIPTIONS
add constraint FKcc5d6eqxu1369k8ycyyt6vn3e
foreign key (PAGE_MODEL_ID)
references CCM_CORE.PAGE_MODELS;
alter table CCM_CORE.PAGE_MODEL_TITLES
add constraint FKj14q9911yhd4js9p6rs21rwjf
foreign key (PAGE_MODEL_ID)
references CCM_CORE.PAGE_MODELS;
alter table CCM_CORE.PAGE_MODELS
add constraint FKk2lihllrxj89mn3tqv43amafe
foreign key (APPLICATION_ID)
@ -1191,21 +1005,6 @@ create sequence hibernate_sequence start 100000 increment 1;
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)
@ -1221,11 +1020,6 @@ create sequence hibernate_sequence start 100000 increment 1;
foreign key (OBJECT_ID)
references CCM_CORE.CCM_OBJECTS;
alter table CCM_CORE.ROLE_DESCRIPTIONS
add constraint FKo09bh4j3k3k0ph3awvjwx31ft
foreign key (ROLE_ID)
references CCM_CORE.CCM_ROLES;
alter table CCM_CORE.ROLE_MEMBERSHIPS
add constraint FK9m88ywi7rcin7b7jrgh53emrq
foreign key (MEMBER_ID)
@ -1241,11 +1035,6 @@ create sequence hibernate_sequence start 100000 increment 1;
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)
@ -1346,16 +1135,6 @@ create sequence hibernate_sequence start 100000 increment 1;
foreign key (TASK_ID)
references CCM_CORE.WORKFLOW_TASKS;
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_ASSIGNMENTS
add constraint FKpq4paqtfbi5erhh98wl1ja005
foreign key (ROLE_ID)
@ -1386,16 +1165,6 @@ create sequence hibernate_sequence start 100000 increment 1;
foreign key (BLOCKING_TASK_ID)
references CCM_CORE.WORKFLOW_TASKS;
alter table CCM_CORE.WORKFLOW_TASK_DESCRIPTIONS
add constraint FKeb7mqbdx3bk7t01vo7kp2hpf
foreign key (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)