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(Assets.class);
classes.add(ContentItems.class); classes.add(ContentItems.class);
classes.add(ContentItemController.class);
classes.add(ContentSections.class); classes.add(ContentSections.class);
classes.add(Images.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.categorization.CategorizationConstants.CAT_XML_NS;
import static org.libreccm.core.CoreConstants.DB_SCHEMA; import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.hibernate.annotations.Type;
import org.libreccm.imexport.Exportable; import org.libreccm.imexport.Exportable;
import javax.persistence.AssociationOverride; import javax.persistence.AssociationOverride;
@ -77,59 +78,48 @@ import javax.persistence.Table;
@NamedQueries({ @NamedQueries({
@NamedQuery( @NamedQuery(
name = "Category.topLevelCategories", 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( @NamedQuery(
name = "Category.findByName", name = "Category.findByName",
query = "SELECT c FROM Category c WHERE c.name = :name") query = "SELECT c FROM Category c WHERE c.name = :name"),
,
@NamedQuery( @NamedQuery(
name = "Category.findByUuid", name = "Category.findByUuid",
query = "SELECT c FROM Category c WHERE c.uuid = :uuid") query = "SELECT c FROM Category c WHERE c.uuid = :uuid"),
,
@NamedQuery( @NamedQuery(
name = "Category.findParentCategory", name = "Category.findParentCategory",
query = "SELECT c.parentCategory FROM Category c WHERE c = :category") query = "SELECT c.parentCategory FROM Category c WHERE c = :category"),
,
@NamedQuery( @NamedQuery(
name = "Category.countAssignedCategories", name = "Category.countAssignedCategories",
query = "SELECT COUNT(c) FROM Categorization c " query = "SELECT COUNT(c) FROM Categorization c "
+ "WHERE c.categorizedObject = :object" + "WHERE c.categorizedObject = :object"
) ),
,
@NamedQuery( @NamedQuery(
name = "Category.isCategorized", name = "Category.isCategorized",
query = "SELECT (CASE WHEN COUNT(c) > 0 THEN true ELSE false END) " query = "SELECT (CASE WHEN COUNT(c) > 0 THEN true ELSE false END) "
+ "FROM Categorization c " + "FROM Categorization c "
+ "WHERE c.categorizedObject = :object") + "WHERE c.categorizedObject = :object"),
,
@NamedQuery( @NamedQuery(
name = "Category.countObjects", name = "Category.countObjects",
query = "SELECT COUNT(c) FROM Categorization c " query = "SELECT COUNT(c) FROM Categorization c "
+ "WHERE c.category = :category") + "WHERE c.category = :category"),
,
@NamedQuery( @NamedQuery(
name = "Category.hasObjects", name = "Category.hasObjects",
query = "SELECT (CASE WHEN COUNT(c) > 0 THEN true ELSE false END) " query = "SELECT (CASE WHEN COUNT(c) > 0 THEN true ELSE false END) "
+ "FROM Categorization c " + "FROM Categorization c "
+ "WHERE c.category = :category") + "WHERE c.category = :category"),
,
@NamedQuery( @NamedQuery(
name = "Category.countSubCategories", name = "Category.countSubCategories",
query = "SELECT COUNT(c) FROM Category c " query = "SELECT COUNT(c) FROM Category c "
+ "WHERE c.parentCategory =:category") + "WHERE c.parentCategory =:category"),
,
@NamedQuery( @NamedQuery(
name = "Category.hasSubCategories", name = "Category.hasSubCategories",
query = "SELECT (CASE WHEN COUNT(c) > 0 THEN true ELSE false END) " query = "SELECT (CASE WHEN COUNT(c) > 0 THEN true ELSE false END) "
+ "FROM Category c " + "FROM Category c "
+ "WHERE c.parentCategory = :category") + "WHERE c.parentCategory = :category"),
,
@NamedQuery( @NamedQuery(
name = "Category.findByNameAndParent", name = "Category.findByNameAndParent",
query = "SELECT c FROM Category c " query = "SELECT c FROM Category c "
+ "WHERE c.name = :name AND c.parentCategory = :parent") + "WHERE c.name = :name AND c.parentCategory = :parent"),
,
@NamedQuery( @NamedQuery(
name = "Category.hasSubCategoryWithName", name = "Category.hasSubCategoryWithName",
query = "SELECT (CASE WHEN COUNT(c) > 0 THEN true ELSE False END) " 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. * The human readable and localisable title of the category.
*/ */
@Embedded // @Embedded
@AssociationOverride( // @AssociationOverride(
name = "values", // name = "values",
joinTable = @JoinTable(name = "CATEGORY_TITLES", // joinTable = @JoinTable(name = "CATEGORY_TITLES",
schema = DB_SCHEMA, // schema = DB_SCHEMA,
joinColumns = { // joinColumns = {
@JoinColumn(name = "OBJECT_ID")} // @JoinColumn(name = "OBJECT_ID")}
)) // ))
@Column(name = "TITLE")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
@XmlElement(name = "title", namespace = CAT_XML_NS) @XmlElement(name = "title", namespace = CAT_XML_NS)
private LocalizedString title; private LocalizedString title;
/** /**
* A localisable description of the category. * A localisable description of the category.
*/ */
@Embedded // @Embedded
@AssociationOverride( // @AssociationOverride(
name = "values", // name = "values",
joinTable = @JoinTable(name = "CATEGORY_DESCRIPTIONS", // joinTable = @JoinTable(name = "CATEGORY_DESCRIPTIONS",
schema = DB_SCHEMA, // schema = DB_SCHEMA,
joinColumns = { // joinColumns = {
@JoinColumn(name = "OBJECT_ID")} // @JoinColumn(name = "OBJECT_ID")}
)) // ))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
@XmlElement(name = "description", namespace = CAT_XML_NS) @XmlElement(name = "description", namespace = CAT_XML_NS)
private LocalizedString description; private LocalizedString description;
@ -469,14 +463,14 @@ public class Category extends CcmObject implements Serializable, Exportable {
public String toString(final String data) { public String toString(final String data) {
return super.toString(String.format(", uniqueId = %s, " return super.toString(String.format(", uniqueId = %s, "
+ "name = \"%s\", " + "name = \"%s\", "
// + "title = %s, " // + "title = %s, "
+ "enabled = %b, " + "enabled = %b, "
+ "visible = %b, " + "visible = %b, "
+ "abstractCategory = %s, " + "abstractCategory = %s, "
+ "categoryOrder = %d%s", + "categoryOrder = %d%s",
uniqueId, uniqueId,
name, name,
// Objects.toString(title), // Objects.toString(title),
enabled, enabled,
visible, visible,
abstractCategory, abstractCategory,

View File

@ -142,9 +142,10 @@ public class CategoryTreeModelLite implements TreeModel {
return category.getName(); return category.getName();
} else { } else {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final CategoryTreeModelLiteController controller = cdiUtil final GlobalizationHelper globalizationHelper = cdiUtil
.findBean(CategoryTreeModelLiteController.class); .findBean(GlobalizationHelper.class);
return controller.getTitle(category); 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.categorization.CategorizationConstants.CAT_XML_NS;
import static org.libreccm.core.CoreConstants.DB_SCHEMA; import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.hibernate.annotations.Type;
import org.libreccm.imexport.Exportable; import org.libreccm.imexport.Exportable;
import java.util.ArrayList; 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 * A human readable title for the {@code Domain}. The title can be
* localised. * localised.
*/ */
@Embedded // @Embedded
@AssociationOverride( // @AssociationOverride(
name = "values", // name = "values",
joinTable = @JoinTable(name = "DOMAIN_TITLES", // joinTable = @JoinTable(name = "DOMAIN_TITLES",
schema = DB_SCHEMA, // schema = DB_SCHEMA,
joinColumns = { // joinColumns = {
@JoinColumn(name = "OBJECT_ID")})) // @JoinColumn(name = "OBJECT_ID")}))
@Column(name = "TITLE")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
@XmlElement(name = "title", namespace = CAT_XML_NS) @XmlElement(name = "title", namespace = CAT_XML_NS)
private LocalizedString title; private LocalizedString title;
/** /**
* A description of the domain. The description can be localised. * A description of the domain. The description can be localised.
*/ */
@Embedded // @Embedded
@AssociationOverride( // @AssociationOverride(
name = "values", // name = "values",
joinTable = @JoinTable(name = "DOMAIN_DESCRIPTIONS", // joinTable = @JoinTable(name = "DOMAIN_DESCRIPTIONS",
schema = DB_SCHEMA, // schema = DB_SCHEMA,
joinColumns = { // joinColumns = {
@JoinColumn(name = "OBJECT_ID")})) // @JoinColumn(name = "OBJECT_ID")}))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
@XmlElement(name = "description", namespace = CAT_XML_NS) @XmlElement(name = "description", namespace = CAT_XML_NS)
private LocalizedString description; private LocalizedString description;

View File

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

View File

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

View File

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

View File

@ -21,7 +21,6 @@ package org.libreccm.formbuilder;
import org.libreccm.core.CcmObject; import org.libreccm.core.CcmObject;
import org.libreccm.l10n.LocalizedString; import org.libreccm.l10n.LocalizedString;
import javax.persistence.*;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@ -29,6 +28,14 @@ import java.util.Objects;
import static org.libreccm.core.CoreConstants.DB_SCHEMA; 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> * @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") @Column(name = "ADMIN_NAME")
private String adminName; private String adminName;
@Embedded // @Embedded
@AssociationOverride( // @AssociationOverride(
name = "values", // name = "values",
joinTable = @JoinTable(name = "FORMBUILDER_COMPONENT_DESCRIPTIONS", // joinTable = @JoinTable(name = "FORMBUILDER_COMPONENT_DESCRIPTIONS",
schema = DB_SCHEMA, // schema = DB_SCHEMA,
joinColumns = { // joinColumns = {
@JoinColumn(name = "COMPONENT_ID")})) // @JoinColumn(name = "COMPONENT_ID")}))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString description; private LocalizedString description;
@Column(name = "ATTRIBUTE_STRING") @Column(name = "ATTRIBUTE_STRING")

View File

@ -20,12 +20,17 @@ package org.libreccm.formbuilder;
import org.libreccm.l10n.LocalizedString; import org.libreccm.l10n.LocalizedString;
import javax.persistence.*;
import java.io.Serializable; import java.io.Serializable;
import java.util.Objects; import java.util.Objects;
import static org.libreccm.core.CoreConstants.DB_SCHEMA; 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> * @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") @Column(name = "PARAMETER_VALUE")
private String parameterValue; private String parameterValue;
@AssociationOverride( // @AssociationOverride(
name = "values", // name = "values",
joinTable = @JoinTable(name = "FORMBUILDER_OPTION_LABELS", // joinTable = @JoinTable(name = "FORMBUILDER_OPTION_LABELS",
schema = DB_SCHEMA, // schema = DB_SCHEMA,
joinColumns = { // joinColumns = {
@JoinColumn(name = "OPTION_ID")})) // @JoinColumn(name = "OPTION_ID")}))
@Column(name = "LABEL")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString label; private LocalizedString label;
public String getParameterValue() { public String getParameterValue() {

View File

@ -21,12 +21,20 @@ package org.libreccm.formbuilder;
import org.libreccm.core.CcmObject; import org.libreccm.core.CcmObject;
import org.libreccm.l10n.LocalizedString; import org.libreccm.l10n.LocalizedString;
import javax.persistence.*;
import java.io.Serializable; import java.io.Serializable;
import java.util.Objects; import java.util.Objects;
import static org.libreccm.core.CoreConstants.DB_SCHEMA; 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> * @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") @Column(name = "QUERY_ID")
private String queryId; private String queryId;
@AssociationOverride( // @AssociationOverride(
name = "values", // name = "values",
joinTable = @JoinTable( // joinTable = @JoinTable(
name = "FORMBUILDER_DATA_QUERY_NAMES", // name = "FORMBUILDER_DATA_QUERY_NAMES",
schema = DB_SCHEMA, // schema = DB_SCHEMA,
joinColumns = { // joinColumns = {
@JoinColumn(name = "DATA_QUERY_ID")})) // @JoinColumn(name = "DATA_QUERY_ID")}))
@Column(name = "QUERY_NAME")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString name; private LocalizedString name;
@AssociationOverride( // @AssociationOverride(
name = "values", // name = "values",
joinTable = @JoinTable( // joinTable = @JoinTable(
name = "FORMBUILDER_DATA_QUERY_DESCRIPTIONS", // name = "FORMBUILDER_DATA_QUERY_DESCRIPTIONS",
schema = DB_SCHEMA, // schema = DB_SCHEMA,
joinColumns = { // joinColumns = {
@JoinColumn(name = "DATA_QUERY_ID")})) // @JoinColumn(name = "DATA_QUERY_ID")}))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString description; private LocalizedString description;
public PersistentDataQuery() { public PersistentDataQuery() {

View File

@ -26,11 +26,10 @@ import java.util.Objects;
import static org.libreccm.core.CoreConstants.DB_SCHEMA; import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import javax.persistence.AssociationOverride; import org.hibernate.annotations.Type;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.Table; import javax.persistence.Table;
@ -44,23 +43,26 @@ public class ProcessListener extends CcmObject implements Serializable {
private static final long serialVersionUID = -3029184333026605708L; private static final long serialVersionUID = -3029184333026605708L;
@AssociationOverride( // @AssociationOverride(
name = "values", // name = "values",
joinTable = @JoinTable( // joinTable = @JoinTable(
name = "FORMBUILDER_PROCESS_LISTENER_NAMES", // name = "FORMBUILDER_PROCESS_LISTENER_NAMES",
schema = DB_SCHEMA, // schema = DB_SCHEMA,
joinColumns = { // joinColumns = {
@JoinColumn(name = "PROCESS_LISTENER_ID")})) // @JoinColumn(name = "PROCESS_LISTENER_ID")}))
@Column(name = "LISTENER_NAME")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString name; private LocalizedString name;
@AssociationOverride( // @AssociationOverride(
name = "values", // name = "values",
joinTable = @JoinTable( // joinTable = @JoinTable(
name = "FORMBUILDER_PROCESS_LISTENER_DESCRIPTIONS", // name = "FORMBUILDER_PROCESS_LISTENER_DESCRIPTIONS",
schema = DB_SCHEMA, // schema = DB_SCHEMA,
joinColumns = { // joinColumns = {
@JoinColumn(name = "PROCESS_LISTENER_ID")})) // @JoinColumn(name = "PROCESS_LISTENER_ID")}))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString description; private LocalizedString description;
@Column(name = "LISTENER_CLASS") @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; package org.libreccm.l10n;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import org.hibernate.annotations.Type;
import org.hibernate.search.annotations.Field;
import org.libreccm.l10n.jaxb.LocalizedStringValuesAdapter; 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.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
@ -45,6 +37,10 @@ import java.util.Set;
import static org.libreccm.l10n.L10NConstants.L10N_XML_NS; 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 * 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 * 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> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/ */
@Embeddable //@Embeddable
@XmlRootElement(name = "localized-string", namespace = L10N_XML_NS) @XmlRootElement(name = "localized-string", namespace = L10N_XML_NS)
@XmlAccessorType(XmlAccessType.FIELD) @XmlAccessorType(XmlAccessType.FIELD)
public class LocalizedString implements Serializable { public class LocalizedString implements Serializable {
@ -63,13 +59,13 @@ public class LocalizedString implements Serializable {
/** /**
* The localised values of the string. * The localised values of the string.
*/ */
@ElementCollection(fetch = FetchType.LAZY) // @ElementCollection(fetch = FetchType.LAZY)
@MapKeyColumn(name = "LOCALE") // @MapKeyColumn(name = "LOCALE")
@Column(name = "LOCALIZED_VALUE") // @Column(name = "LOCALIZED_VALUE")
@Basic // @Basic
@Lob // @Lob
@Type(type = "org.hibernate.type.TextType") // @Type(type = "org.hibernate.type.TextType")
@Field // @Field
@XmlElement(name = "values", namespace = L10N_XML_NS) @XmlElement(name = "values", namespace = L10N_XML_NS)
@XmlJavaTypeAdapter(LocalizedStringValuesAdapter.class) @XmlJavaTypeAdapter(LocalizedStringValuesAdapter.class)
private Map<Locale, String> values; private Map<Locale, String> values;
@ -202,6 +198,41 @@ public class LocalizedString implements Serializable {
return obj instanceof LocalizedString; 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 @Override
public String toString() { public String toString() {
return String.format( 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; package org.libreccm.pagemodel;
import org.hibernate.annotations.Type;
import org.libreccm.core.CoreConstants; import org.libreccm.core.CoreConstants;
import org.libreccm.l10n.LocalizedString; import org.libreccm.l10n.LocalizedString;
import org.libreccm.web.CcmApplication; import org.libreccm.web.CcmApplication;
@ -225,27 +226,31 @@ public class PageModel implements Serializable {
* The localised title of this {@code PageModel} (shown in the * The localised title of this {@code PageModel} (shown in the
* administration UI), * administration UI),
*/ */
@Embedded // @Embedded
@AssociationOverride( // @AssociationOverride(
name = "values", // name = "values",
joinTable = @JoinTable(name = "PAGE_MODEL_TITLES", // joinTable = @JoinTable(name = "PAGE_MODEL_TITLES",
schema = CoreConstants.DB_SCHEMA, // schema = CoreConstants.DB_SCHEMA,
joinColumns = { // joinColumns = {
@JoinColumn(name = "PAGE_MODEL_ID") // @JoinColumn(name = "PAGE_MODEL_ID")
})) // }))
@Column(name = "TITLE")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString title; private LocalizedString title;
/** /**
* A description of this {@code PageModel} describing its purpose. * A description of this {@code PageModel} describing its purpose.
*/ */
@Embedded // @Embedded
@AssociationOverride( // @AssociationOverride(
name = "values", // name = "values",
joinTable = @JoinTable(name = "PAGE_MODEL_DESCRIPTIONS", // joinTable = @JoinTable(name = "PAGE_MODEL_DESCRIPTIONS",
schema = CoreConstants.DB_SCHEMA, // schema = CoreConstants.DB_SCHEMA,
joinColumns = { // joinColumns = {
@JoinColumn(name = "PAGE_MODEL_ID") // @JoinColumn(name = "PAGE_MODEL_ID")
})) // }))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString description; 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.CORE_XML_NS;
import static org.libreccm.core.CoreConstants.DB_SCHEMA; import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.hibernate.annotations.Type;
import org.libreccm.imexport.Exportable; import org.libreccm.imexport.Exportable;
import java.io.Serializable; import java.io.Serializable;
@ -182,14 +183,16 @@ public class Role implements Serializable, Exportable {
/** /**
* An optional description for a role. * An optional description for a role.
*/ */
@Embedded // @Embedded
@AssociationOverride( // @AssociationOverride(
name = "values", // name = "values",
joinTable = @JoinTable(name = "ROLE_DESCRIPTIONS", // joinTable = @JoinTable(name = "ROLE_DESCRIPTIONS",
schema = DB_SCHEMA, // schema = DB_SCHEMA,
joinColumns = { // joinColumns = {
@JoinColumn(name = "ROLE_ID") // @JoinColumn(name = "ROLE_ID")
})) // }))
@Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
@XmlElement(name = "description", namespace = CORE_XML_NS) @XmlElement(name = "description", namespace = CORE_XML_NS)
private LocalizedString description = new LocalizedString(); private LocalizedString description = new LocalizedString();

View File

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

View File

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

View File

@ -24,8 +24,10 @@
create table CCM_CORE.CATEGORIES ( create table CCM_CORE.CATEGORIES (
ABSTRACT_CATEGORY boolean, ABSTRACT_CATEGORY boolean,
CATEGORY_ORDER bigint, CATEGORY_ORDER bigint,
DESCRIPTION json,
ENABLED boolean, ENABLED boolean,
NAME varchar(255) not null, NAME varchar(255) not null,
TITLE json,
UNIQUE_ID varchar(255), UNIQUE_ID varchar(255),
VISIBLE boolean, VISIBLE boolean,
OBJECT_ID bigint not null, OBJECT_ID bigint not null,
@ -45,16 +47,11 @@
primary key (CATEGORIZATION_ID) 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 ( create table CCM_CORE.CATEGORY_DOMAINS (
DESCRIPTION json,
DOMAIN_KEY varchar(255) not null, DOMAIN_KEY varchar(255) not null,
RELEASED timestamp, RELEASED timestamp,
TITLE json,
URI varchar(1024), URI varchar(1024),
VERSION varchar(255), VERSION varchar(255),
OBJECT_ID bigint not null, OBJECT_ID bigint not null,
@ -62,13 +59,6 @@
primary key (OBJECT_ID) 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 ( create table CCM_CORE.CCM_OBJECTS (
OBJECT_ID bigint not null, OBJECT_ID bigint not null,
DISPLAY_NAME varchar(255), DISPLAY_NAME varchar(255),
@ -94,6 +84,7 @@
create table CCM_CORE.CCM_ROLES ( create table CCM_CORE.CCM_ROLES (
ROLE_ID bigint not null, ROLE_ID bigint not null,
DESCRIPTION json,
NAME varchar(512) not null, NAME varchar(512) not null,
UUID varchar(255) not null, UUID varchar(255) not null,
primary key (ROLE_ID) primary key (ROLE_ID)
@ -111,13 +102,6 @@
primary key (OBJECT_ID) 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 ( create table CCM_CORE.DOMAIN_OWNERSHIPS (
OWNERSHIP_ID bigint not null, OWNERSHIP_ID bigint not null,
CONTEXT varchar(255), CONTEXT varchar(255),
@ -129,25 +113,12 @@
primary key (OWNERSHIP_ID) 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 ( create table CCM_CORE.FORMBUILDER_COMPONENTS (
ACTIVE boolean, ACTIVE boolean,
ADMIN_NAME varchar(255), ADMIN_NAME varchar(255),
ATTRIBUTE_STRING varchar(255), ATTRIBUTE_STRING varchar(255),
COMPONENT_ORDER bigint, COMPONENT_ORDER bigint,
DESCRIPTION json,
SELECTED boolean, SELECTED boolean,
OBJECT_ID bigint not null, OBJECT_ID bigint not null,
parentComponent_OBJECT_ID bigint, parentComponent_OBJECT_ID bigint,
@ -176,25 +147,13 @@
); );
create table CCM_CORE.FORMBUILDER_DATA_QUERIES ( create table CCM_CORE.FORMBUILDER_DATA_QUERIES (
DESCRIPTION json,
NAME json,
QUERY_ID varchar(255), QUERY_ID varchar(255),
OBJECT_ID bigint not null, OBJECT_ID bigint not null,
primary key (OBJECT_ID) 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 ( create table CCM_CORE.FORMBUILDER_FORMSECTIONS (
FORMSECTION_ACTION varchar(255), FORMSECTION_ACTION varchar(255),
OBJECT_ID bigint not null, OBJECT_ID bigint not null,
@ -225,35 +184,17 @@
primary key (OBJECT_ID) 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 ( create table CCM_CORE.FORMBUILDER_OPTIONS (
LABEL json,
PARAMETER_VALUE varchar(255), PARAMETER_VALUE varchar(255),
OBJECT_ID bigint not null, OBJECT_ID bigint not null,
primary key (OBJECT_ID) 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 ( create table CCM_CORE.FORMBUILDER_PROCESS_LISTENERS (
DESCRIPTION json,
LISTENER_CLASS varchar(255), LISTENER_CLASS varchar(255),
NAME json,
PROCESS_LISTENER_ORDER bigint, PROCESS_LISTENER_ORDER bigint,
OBJECT_ID bigint not null, OBJECT_ID bigint not null,
formSection_OBJECT_ID bigint, formSection_OBJECT_ID bigint,
@ -415,25 +356,13 @@
primary key (CONTAINER_ID) 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 ( create table CCM_CORE.PAGE_MODELS (
PAGE_MODEL_ID bigint not null, PAGE_MODEL_ID bigint not null,
DESCRIPTION json,
LAST_MODIFIED timestamp, LAST_MODIFIED timestamp,
MODEL_UUID varchar(255) not null, MODEL_UUID varchar(255) not null,
NAME varchar(255), NAME varchar(255),
TITLE json,
TYPE varchar(255) not null, TYPE varchar(255) not null,
UUID varchar(255) not null, UUID varchar(255) not null,
VERSION varchar(255) not null, VERSION varchar(255) not null,
@ -488,29 +417,9 @@
primary key (QUEUE_ITEM_ID) 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 ( create table CCM_CORE.RESOURCE_TYPES (
RESOURCE_TYPE_ID bigint not null, RESOURCE_TYPE_ID bigint not null,
DESCRIPTION json,
SINGLETON boolean, SINGLETON boolean,
TITLE varchar(254) not null, TITLE varchar(254) not null,
UUID varchar(255) not null, UUID varchar(255) not null,
@ -522,19 +431,14 @@
create table CCM_CORE.RESOURCES ( create table CCM_CORE.RESOURCES (
CREATED timestamp, CREATED timestamp,
DESCRIPTION json,
TITLE json,
OBJECT_ID bigint not null, OBJECT_ID bigint not null,
parent_OBJECT_ID bigint, parent_OBJECT_ID bigint,
resourceType_RESOURCE_TYPE_ID bigint, resourceType_RESOURCE_TYPE_ID bigint,
primary key (OBJECT_ID) 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 ( create table CCM_CORE.ROLE_MEMBERSHIPS (
MEMBERSHIP_ID bigint not null, MEMBERSHIP_ID bigint not null,
UUID varchar(255) not null, UUID varchar(255) not null,
@ -548,11 +452,12 @@
SETTING_ID bigint not null, SETTING_ID bigint not null,
CONFIGURATION_CLASS varchar(512) not null, CONFIGURATION_CLASS varchar(512) not null,
NAME 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_BOOLEAN boolean,
SETTING_VALUE_LONG bigint, SETTING_VALUE_LONG bigint,
SETTING_VALUE_STRING varchar(1024), SETTING_VALUE_STRING varchar(1024),
SETTING_VALUE_DOUBLE double,
SETTING_VALUE_BIG_DECIMAL decimal(19,2),
primary key (SETTING_ID) primary key (SETTING_ID)
); );
@ -561,13 +466,6 @@
value varchar(255) 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 ( create table CCM_CORE.SETTINGS_STRING_LIST (
LIST_ID bigint not null, LIST_ID bigint not null,
value varchar(255) value varchar(255)
@ -697,20 +595,6 @@
primary key (TASK_ID) 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 ( create table CCM_CORE.WORKFLOW_TASK_ASSIGNMENTS (
TASK_ASSIGNMENT_ID bigint not null, TASK_ASSIGNMENT_ID bigint not null,
UUID varchar(255) not null, UUID varchar(255) not null,
@ -736,23 +620,11 @@
primary key (TASK_DEPENDENCY_ID) 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 ( create table CCM_CORE.WORKFLOW_TASKS (
TASK_ID bigint not null, TASK_ID bigint not null,
ACTIVE boolean, ACTIVE boolean,
DESCRIPTION json,
LABEL json,
TASK_STATE varchar(512), TASK_STATE varchar(512),
UUID varchar(255) not null, UUID varchar(255) not null,
WORKFLOW_ID bigint, WORKFLOW_ID bigint,
@ -763,6 +635,8 @@
WORKFLOW_ID bigint not null, WORKFLOW_ID bigint not null,
abstract_workflow boolean, abstract_workflow boolean,
ACTIVE boolean, ACTIVE boolean,
DESCRIPTION json,
NAME json,
WORKFLOW_STATE varchar(255), WORKFLOW_STATE varchar(255),
TASKS_STATE varchar(255), TASKS_STATE varchar(255),
UUID varchar(255) not null, UUID varchar(255) not null,
@ -830,7 +704,7 @@
alter table CCM_CORE.WORKFLOWS alter table CCM_CORE.WORKFLOWS
add constraint UK_o113id7d1cxql0edsrohlnn9x unique (UUID); 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 alter table CCM_CORE.APPLICATIONS
add constraint FKatcp9ij6mbkx0nfeig1o6n3lm add constraint FKatcp9ij6mbkx0nfeig1o6n3lm
@ -862,11 +736,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
foreign key (CATEGORY_ID) foreign key (CATEGORY_ID)
references CCM_CORE.CATEGORIES; 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 alter table CCM_CORE.CATEGORY_DOMAINS
add constraint FKf25vi73cji01w8fgo6ow1dgg add constraint FKf25vi73cji01w8fgo6ow1dgg
foreign key (ROOT_CATEGORY_ID) foreign key (ROOT_CATEGORY_ID)
@ -877,11 +746,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
foreign key (OBJECT_ID) foreign key (OBJECT_ID)
references CCM_CORE.CCM_OBJECTS; 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 alter table CCM_CORE.CCM_OBJECTS_AUD
add constraint FKr00eauutiyvocno8ckx6h9nw6 add constraint FKr00eauutiyvocno8ckx6h9nw6
foreign key (REV) foreign key (REV)
@ -902,11 +766,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
foreign key (OBJECT_ID) foreign key (OBJECT_ID)
references CCM_CORE.CCM_OBJECTS; 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 alter table CCM_CORE.DOMAIN_OWNERSHIPS
add constraint FK47nsasr7jrdwlky5gx0u6e9py add constraint FK47nsasr7jrdwlky5gx0u6e9py
foreign key (domain_OBJECT_ID) foreign key (domain_OBJECT_ID)
@ -917,16 +776,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
foreign key (owner_OBJECT_ID) foreign key (owner_OBJECT_ID)
references CCM_CORE.APPLICATIONS; 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 alter table CCM_CORE.FORMBUILDER_COMPONENTS
add constraint FKpcpmvyiix023b4g5n4q8nkfca add constraint FKpcpmvyiix023b4g5n4q8nkfca
foreign key (parentComponent_OBJECT_ID) foreign key (parentComponent_OBJECT_ID)
@ -957,16 +806,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
foreign key (OBJECT_ID) foreign key (OBJECT_ID)
references CCM_CORE.CCM_OBJECTS; 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 alter table CCM_CORE.FORMBUILDER_FORMSECTIONS
add constraint FKnfhsgxp4lvigq2pm33pn4afac add constraint FKnfhsgxp4lvigq2pm33pn4afac
foreign key (OBJECT_ID) foreign key (OBJECT_ID)
@ -992,26 +831,11 @@ create sequence hibernate_sequence start with 100000 increment by 1;
foreign key (OBJECT_ID) foreign key (OBJECT_ID)
references CCM_CORE.CCM_OBJECTS; 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 alter table CCM_CORE.FORMBUILDER_OPTIONS
add constraint FKhe5q71wby9g4i56sotc501h11 add constraint FKhe5q71wby9g4i56sotc501h11
foreign key (OBJECT_ID) foreign key (OBJECT_ID)
references CCM_CORE.FORMBUILDER_COMPONENTS; 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 alter table CCM_CORE.FORMBUILDER_PROCESS_LISTENERS
add constraint FK7uiaeax8qafm82e5k729ms5ku add constraint FK7uiaeax8qafm82e5k729ms5ku
foreign key (formSection_OBJECT_ID) foreign key (formSection_OBJECT_ID)
@ -1137,16 +961,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
foreign key (STYLE_ID) foreign key (STYLE_ID)
references CCM_CORE.STYLES; 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 alter table CCM_CORE.PAGE_MODELS
add constraint FKk2lihllrxj89mn3tqv43amafe add constraint FKk2lihllrxj89mn3tqv43amafe
foreign key (APPLICATION_ID) foreign key (APPLICATION_ID)
@ -1197,21 +1011,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
foreign key (RECEIVER_ID) foreign key (RECEIVER_ID)
references CCM_CORE.PARTIES; 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 alter table CCM_CORE.RESOURCES
add constraint FKbo7ibfgodicn9flv2gfo11g5a add constraint FKbo7ibfgodicn9flv2gfo11g5a
foreign key (parent_OBJECT_ID) foreign key (parent_OBJECT_ID)
@ -1227,11 +1026,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
foreign key (OBJECT_ID) foreign key (OBJECT_ID)
references CCM_CORE.CCM_OBJECTS; 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 alter table CCM_CORE.ROLE_MEMBERSHIPS
add constraint FK9m88ywi7rcin7b7jrgh53emrq add constraint FK9m88ywi7rcin7b7jrgh53emrq
foreign key (MEMBER_ID) foreign key (MEMBER_ID)
@ -1247,11 +1041,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
foreign key (ENUM_ID) foreign key (ENUM_ID)
references CCM_CORE.SETTINGS; 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 alter table CCM_CORE.SETTINGS_STRING_LIST
add constraint FKqeclqa5sf1g53vxs857tpwrus add constraint FKqeclqa5sf1g53vxs857tpwrus
foreign key (LIST_ID) foreign key (LIST_ID)
@ -1352,16 +1141,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
foreign key (TASK_ID) foreign key (TASK_ID)
references CCM_CORE.WORKFLOW_TASKS; 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 alter table CCM_CORE.WORKFLOW_TASK_ASSIGNMENTS
add constraint FKpq4paqtfbi5erhh98wl1ja005 add constraint FKpq4paqtfbi5erhh98wl1ja005
foreign key (ROLE_ID) foreign key (ROLE_ID)
@ -1392,16 +1171,6 @@ create sequence hibernate_sequence start with 100000 increment by 1;
foreign key (BLOCKING_TASK_ID) foreign key (BLOCKING_TASK_ID)
references CCM_CORE.WORKFLOW_TASKS; 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 alter table CCM_CORE.WORKFLOW_TASKS
add constraint FK1693cbc36e4d8gucg8q7sc57e add constraint FK1693cbc36e4d8gucg8q7sc57e
foreign key (WORKFLOW_ID) foreign key (WORKFLOW_ID)

View File

@ -18,8 +18,10 @@
create table CCM_CORE.CATEGORIES ( create table CCM_CORE.CATEGORIES (
ABSTRACT_CATEGORY boolean, ABSTRACT_CATEGORY boolean,
CATEGORY_ORDER int8, CATEGORY_ORDER int8,
DESCRIPTION jsonb,
ENABLED boolean, ENABLED boolean,
NAME varchar(255) not null, NAME varchar(255) not null,
TITLE jsonb,
UNIQUE_ID varchar(255), UNIQUE_ID varchar(255),
VISIBLE boolean, VISIBLE boolean,
OBJECT_ID int8 not null, OBJECT_ID int8 not null,
@ -39,16 +41,11 @@
primary key (CATEGORIZATION_ID) 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 ( create table CCM_CORE.CATEGORY_DOMAINS (
DESCRIPTION jsonb,
DOMAIN_KEY varchar(255) not null, DOMAIN_KEY varchar(255) not null,
RELEASED timestamp, RELEASED timestamp,
TITLE jsonb,
URI varchar(1024), URI varchar(1024),
VERSION varchar(255), VERSION varchar(255),
OBJECT_ID int8 not null, OBJECT_ID int8 not null,
@ -56,13 +53,6 @@
primary key (OBJECT_ID) 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 ( create table CCM_CORE.CCM_OBJECTS (
OBJECT_ID int8 not null, OBJECT_ID int8 not null,
DISPLAY_NAME varchar(255), DISPLAY_NAME varchar(255),
@ -88,6 +78,7 @@
create table CCM_CORE.CCM_ROLES ( create table CCM_CORE.CCM_ROLES (
ROLE_ID int8 not null, ROLE_ID int8 not null,
DESCRIPTION jsonb,
NAME varchar(512) not null, NAME varchar(512) not null,
UUID varchar(255) not null, UUID varchar(255) not null,
primary key (ROLE_ID) primary key (ROLE_ID)
@ -105,13 +96,6 @@
primary key (OBJECT_ID) 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 ( create table CCM_CORE.DOMAIN_OWNERSHIPS (
OWNERSHIP_ID int8 not null, OWNERSHIP_ID int8 not null,
CONTEXT varchar(255), CONTEXT varchar(255),
@ -123,25 +107,12 @@
primary key (OWNERSHIP_ID) 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 ( create table CCM_CORE.FORMBUILDER_COMPONENTS (
ACTIVE boolean, ACTIVE boolean,
ADMIN_NAME varchar(255), ADMIN_NAME varchar(255),
ATTRIBUTE_STRING varchar(255), ATTRIBUTE_STRING varchar(255),
COMPONENT_ORDER int8, COMPONENT_ORDER int8,
DESCRIPTION jsonb,
SELECTED boolean, SELECTED boolean,
OBJECT_ID int8 not null, OBJECT_ID int8 not null,
parentComponent_OBJECT_ID int8, parentComponent_OBJECT_ID int8,
@ -170,25 +141,13 @@
); );
create table CCM_CORE.FORMBUILDER_DATA_QUERIES ( create table CCM_CORE.FORMBUILDER_DATA_QUERIES (
DESCRIPTION jsonb,
QUERY_NAME jsonb,
QUERY_ID varchar(255), QUERY_ID varchar(255),
OBJECT_ID int8 not null, OBJECT_ID int8 not null,
primary key (OBJECT_ID) 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 ( create table CCM_CORE.FORMBUILDER_FORMSECTIONS (
FORMSECTION_ACTION varchar(255), FORMSECTION_ACTION varchar(255),
OBJECT_ID int8 not null, OBJECT_ID int8 not null,
@ -219,35 +178,17 @@
primary key (OBJECT_ID) 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 ( create table CCM_CORE.FORMBUILDER_OPTIONS (
LABEL jsonb,
PARAMETER_VALUE varchar(255), PARAMETER_VALUE varchar(255),
OBJECT_ID int8 not null, OBJECT_ID int8 not null,
primary key (OBJECT_ID) 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 ( create table CCM_CORE.FORMBUILDER_PROCESS_LISTENERS (
DESCRIPTION jsonb,
LISTENER_CLASS varchar(255), LISTENER_CLASS varchar(255),
LISTENER_NAME jsonb,
PROCESS_LISTENER_ORDER int8, PROCESS_LISTENER_ORDER int8,
OBJECT_ID int8 not null, OBJECT_ID int8 not null,
formSection_OBJECT_ID int8, formSection_OBJECT_ID int8,
@ -409,25 +350,13 @@
primary key (CONTAINER_ID) 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 ( create table CCM_CORE.PAGE_MODELS (
PAGE_MODEL_ID int8 not null, PAGE_MODEL_ID int8 not null,
DESCRIPTION jsonb,
LAST_MODIFIED timestamp, LAST_MODIFIED timestamp,
MODEL_UUID varchar(255) not null, MODEL_UUID varchar(255) not null,
NAME varchar(255), NAME varchar(255),
TITLE jsonb,
TYPE varchar(255) not null, TYPE varchar(255) not null,
UUID varchar(255) not null, UUID varchar(255) not null,
VERSION varchar(255) not null, VERSION varchar(255) not null,
@ -482,29 +411,9 @@
primary key (QUEUE_ITEM_ID) 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 ( create table CCM_CORE.RESOURCE_TYPES (
RESOURCE_TYPE_ID int8 not null, RESOURCE_TYPE_ID int8 not null,
DESCRIPTION jsonb,
SINGLETON boolean, SINGLETON boolean,
TITLE varchar(254) not null, TITLE varchar(254) not null,
UUID varchar(255) not null, UUID varchar(255) not null,
@ -516,19 +425,14 @@
create table CCM_CORE.RESOURCES ( create table CCM_CORE.RESOURCES (
CREATED timestamp, CREATED timestamp,
DESCRIPTION jsonb,
TITLE jsonb,
OBJECT_ID int8 not null, OBJECT_ID int8 not null,
parent_OBJECT_ID int8, parent_OBJECT_ID int8,
resourceType_RESOURCE_TYPE_ID int8, resourceType_RESOURCE_TYPE_ID int8,
primary key (OBJECT_ID) 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 ( create table CCM_CORE.ROLE_MEMBERSHIPS (
MEMBERSHIP_ID int8 not null, MEMBERSHIP_ID int8 not null,
UUID varchar(255) not null, UUID varchar(255) not null,
@ -542,11 +446,12 @@
SETTING_ID int8 not null, SETTING_ID int8 not null,
CONFIGURATION_CLASS varchar(512) not null, CONFIGURATION_CLASS varchar(512) not null,
NAME 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_BOOLEAN boolean,
SETTING_VALUE_LONG int8, SETTING_VALUE_LONG int8,
SETTING_VALUE_STRING varchar(1024), SETTING_VALUE_STRING varchar(1024),
SETTING_VALUE_DOUBLE float8,
SETTING_VALUE_BIG_DECIMAL numeric(19, 2),
primary key (SETTING_ID) primary key (SETTING_ID)
); );
@ -555,13 +460,6 @@
value varchar(255) 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 ( create table CCM_CORE.SETTINGS_STRING_LIST (
LIST_ID int8 not null, LIST_ID int8 not null,
value varchar(255) value varchar(255)
@ -691,20 +589,6 @@
primary key (TASK_ID) 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 ( create table CCM_CORE.WORKFLOW_TASK_ASSIGNMENTS (
TASK_ASSIGNMENT_ID int8 not null, TASK_ASSIGNMENT_ID int8 not null,
UUID varchar(255) not null, UUID varchar(255) not null,
@ -730,23 +614,11 @@
primary key (TASK_DEPENDENCY_ID) 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 ( create table CCM_CORE.WORKFLOW_TASKS (
TASK_ID int8 not null, TASK_ID int8 not null,
ACTIVE boolean, ACTIVE boolean,
DESCRIPTION jsonb,
LABEL jsonb,
TASK_STATE varchar(512), TASK_STATE varchar(512),
UUID varchar(255) not null, UUID varchar(255) not null,
WORKFLOW_ID int8, WORKFLOW_ID int8,
@ -757,6 +629,8 @@
WORKFLOW_ID int8 not null, WORKFLOW_ID int8 not null,
abstract_workflow boolean, abstract_workflow boolean,
ACTIVE boolean, ACTIVE boolean,
DESCRIPTION jsonb,
NAME jsonb,
WORKFLOW_STATE varchar(255), WORKFLOW_STATE varchar(255),
TASKS_STATE varchar(255), TASKS_STATE varchar(255),
UUID varchar(255) not null, UUID varchar(255) not null,
@ -824,7 +698,7 @@
alter table CCM_CORE.WORKFLOWS alter table CCM_CORE.WORKFLOWS
add constraint UK_o113id7d1cxql0edsrohlnn9x unique (UUID); 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 alter table CCM_CORE.APPLICATIONS
add constraint FKatcp9ij6mbkx0nfeig1o6n3lm add constraint FKatcp9ij6mbkx0nfeig1o6n3lm
@ -856,11 +730,6 @@ create sequence hibernate_sequence start 100000 increment 1;
foreign key (CATEGORY_ID) foreign key (CATEGORY_ID)
references CCM_CORE.CATEGORIES; 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 alter table CCM_CORE.CATEGORY_DOMAINS
add constraint FKf25vi73cji01w8fgo6ow1dgg add constraint FKf25vi73cji01w8fgo6ow1dgg
foreign key (ROOT_CATEGORY_ID) foreign key (ROOT_CATEGORY_ID)
@ -871,11 +740,6 @@ create sequence hibernate_sequence start 100000 increment 1;
foreign key (OBJECT_ID) foreign key (OBJECT_ID)
references CCM_CORE.CCM_OBJECTS; 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 alter table CCM_CORE.CCM_OBJECTS_AUD
add constraint FKr00eauutiyvocno8ckx6h9nw6 add constraint FKr00eauutiyvocno8ckx6h9nw6
foreign key (REV) foreign key (REV)
@ -896,11 +760,6 @@ create sequence hibernate_sequence start 100000 increment 1;
foreign key (OBJECT_ID) foreign key (OBJECT_ID)
references CCM_CORE.CCM_OBJECTS; 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 alter table CCM_CORE.DOMAIN_OWNERSHIPS
add constraint FK47nsasr7jrdwlky5gx0u6e9py add constraint FK47nsasr7jrdwlky5gx0u6e9py
foreign key (domain_OBJECT_ID) foreign key (domain_OBJECT_ID)
@ -911,16 +770,6 @@ create sequence hibernate_sequence start 100000 increment 1;
foreign key (owner_OBJECT_ID) foreign key (owner_OBJECT_ID)
references CCM_CORE.APPLICATIONS; 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 alter table CCM_CORE.FORMBUILDER_COMPONENTS
add constraint FKpcpmvyiix023b4g5n4q8nkfca add constraint FKpcpmvyiix023b4g5n4q8nkfca
foreign key (parentComponent_OBJECT_ID) foreign key (parentComponent_OBJECT_ID)
@ -951,16 +800,6 @@ create sequence hibernate_sequence start 100000 increment 1;
foreign key (OBJECT_ID) foreign key (OBJECT_ID)
references CCM_CORE.CCM_OBJECTS; 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 alter table CCM_CORE.FORMBUILDER_FORMSECTIONS
add constraint FKnfhsgxp4lvigq2pm33pn4afac add constraint FKnfhsgxp4lvigq2pm33pn4afac
foreign key (OBJECT_ID) foreign key (OBJECT_ID)
@ -986,26 +825,11 @@ create sequence hibernate_sequence start 100000 increment 1;
foreign key (OBJECT_ID) foreign key (OBJECT_ID)
references CCM_CORE.CCM_OBJECTS; 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 alter table CCM_CORE.FORMBUILDER_OPTIONS
add constraint FKhe5q71wby9g4i56sotc501h11 add constraint FKhe5q71wby9g4i56sotc501h11
foreign key (OBJECT_ID) foreign key (OBJECT_ID)
references CCM_CORE.FORMBUILDER_COMPONENTS; 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 alter table CCM_CORE.FORMBUILDER_PROCESS_LISTENERS
add constraint FK7uiaeax8qafm82e5k729ms5ku add constraint FK7uiaeax8qafm82e5k729ms5ku
foreign key (formSection_OBJECT_ID) foreign key (formSection_OBJECT_ID)
@ -1131,16 +955,6 @@ create sequence hibernate_sequence start 100000 increment 1;
foreign key (STYLE_ID) foreign key (STYLE_ID)
references CCM_CORE.STYLES; 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 alter table CCM_CORE.PAGE_MODELS
add constraint FKk2lihllrxj89mn3tqv43amafe add constraint FKk2lihllrxj89mn3tqv43amafe
foreign key (APPLICATION_ID) foreign key (APPLICATION_ID)
@ -1191,21 +1005,6 @@ create sequence hibernate_sequence start 100000 increment 1;
foreign key (RECEIVER_ID) foreign key (RECEIVER_ID)
references CCM_CORE.PARTIES; 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 alter table CCM_CORE.RESOURCES
add constraint FKbo7ibfgodicn9flv2gfo11g5a add constraint FKbo7ibfgodicn9flv2gfo11g5a
foreign key (parent_OBJECT_ID) foreign key (parent_OBJECT_ID)
@ -1221,11 +1020,6 @@ create sequence hibernate_sequence start 100000 increment 1;
foreign key (OBJECT_ID) foreign key (OBJECT_ID)
references CCM_CORE.CCM_OBJECTS; 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 alter table CCM_CORE.ROLE_MEMBERSHIPS
add constraint FK9m88ywi7rcin7b7jrgh53emrq add constraint FK9m88ywi7rcin7b7jrgh53emrq
foreign key (MEMBER_ID) foreign key (MEMBER_ID)
@ -1241,11 +1035,6 @@ create sequence hibernate_sequence start 100000 increment 1;
foreign key (ENUM_ID) foreign key (ENUM_ID)
references CCM_CORE.SETTINGS; 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 alter table CCM_CORE.SETTINGS_STRING_LIST
add constraint FKqeclqa5sf1g53vxs857tpwrus add constraint FKqeclqa5sf1g53vxs857tpwrus
foreign key (LIST_ID) foreign key (LIST_ID)
@ -1346,16 +1135,6 @@ create sequence hibernate_sequence start 100000 increment 1;
foreign key (TASK_ID) foreign key (TASK_ID)
references CCM_CORE.WORKFLOW_TASKS; 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 alter table CCM_CORE.WORKFLOW_TASK_ASSIGNMENTS
add constraint FKpq4paqtfbi5erhh98wl1ja005 add constraint FKpq4paqtfbi5erhh98wl1ja005
foreign key (ROLE_ID) foreign key (ROLE_ID)
@ -1386,16 +1165,6 @@ create sequence hibernate_sequence start 100000 increment 1;
foreign key (BLOCKING_TASK_ID) foreign key (BLOCKING_TASK_ID)
references CCM_CORE.WORKFLOW_TASKS; 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 alter table CCM_CORE.WORKFLOW_TASKS
add constraint FK1693cbc36e4d8gucg8q7sc57e add constraint FK1693cbc36e4d8gucg8q7sc57e
foreign key (WORKFLOW_ID) foreign key (WORKFLOW_ID)