Compare commits

...

19 Commits

Author SHA1 Message Date
Jens Pelzetter 2f31c5b3a8 Several bugfixes
Former-commit-id: 341404fca4
2020-05-24 16:33:45 +02:00
Jens Pelzetter 179ca1fc5e Updated user entity, don't use JSONB for primary email address
Former-commit-id: facba35003
2020-05-24 14:36:20 +02:00
Jens Pelzetter 1fc48eb39c Don't use embedded entity for email address in User class
Former-commit-id: 87dea3cebd
2020-05-24 14:00:23 +02:00
Jens Pelzetter 8956a5d9f5 Fixed typos in test datasets
Former-commit-id: 26c8ce9491
2020-05-24 10:42:35 +02:00
Jens Pelzetter ede3d639f5 Fixed typo in dataset for ShiroTest (and others)
Former-commit-id: 3b7c7909e0
2020-05-24 10:18:56 +02:00
Jens Pelzetter 132df428ed fixed typos in test datasets for GroupManagerTest
Former-commit-id: 8085699290
2020-05-24 10:04:07 +02:00
Jens Pelzetter c49dc8e31a fixed dbunit jsonb type
Former-commit-id: 8842aa66dc
2020-05-23 20:43:45 +02:00
Jens Pelzetter 12cc5f5ea7 Fixed test failures
Former-commit-id: 02fa324249
2020-05-23 20:01:30 +02:00
Jens Pelzetter 87172c1f27 Use JSONB column to store email addresses
Former-commit-id: 98d01b978f
2020-05-23 19:22:34 +02:00
Jens Pelzetter 047aaf0645 Missing dependency in deployment for ShiroTest fixed
Former-commit-id: ab7cea8227
2020-05-23 17:08:02 +02:00
Jens Pelzetter 85fabbf29e Missing classes for integration tests added to deployment
Former-commit-id: 0b50f2508e
2020-05-23 16:43:27 +02:00
Jens Pelzetter bbe69cbd2f Reducing boilerplate code for JSON mapping UserTypes
Former-commit-id: 1f970809b3
2020-05-23 16:30:01 +02:00
Jens Pelzetter 05b722e61c Use try with resources for readers
Former-commit-id: e5d0e5f329
2020-05-23 16:01:39 +02:00
Jens Pelzetter f03e63a443 Updated JavaDoc of LocalizedString
Former-commit-id: 69de594da6
2020-05-22 19:26:22 +02:00
Jens Pelzetter 0eea72225e Fixed bug in LocalizedStringType for null values
Former-commit-id: f62ece6de1
2020-05-21 21:09:43 +02:00
Jens Pelzetter 7d3475a480 JSON-DB cols work now for tests with PostgreSQL
Former-commit-id: 7a843e81b6
2020-05-21 19:50:27 +02:00
Jens Pelzetter 04789fd327 Trying to make DBUnit to work with JSON columns
Former-commit-id: 7d93f4dde4
2020-05-20 06:46:40 +02:00
Jens Pelzetter a50e1fb99b More edits for refactoring embedded entities into JSON cols
Former-commit-id: a82f46c846
2020-05-17 18:56:57 +02:00
Jens Pelzetter a369979f79 Refactor embedded localized string to JSON columns
Former-commit-id: 5abbc454a2
2020-05-17 17:07:43 +02:00
123 changed files with 3052 additions and 2144 deletions

View File

@ -11,6 +11,7 @@ import com.arsdigita.cms.contenttypes.ui.ProfileSiteItemMiscStep;
import com.arsdigita.cms.contenttypes.ui.ProfileSiteItemPositionStep; import com.arsdigita.cms.contenttypes.ui.ProfileSiteItemPositionStep;
import com.arsdigita.cms.contenttypes.ui.ProfileSiteItemPropertiesStep; import com.arsdigita.cms.contenttypes.ui.ProfileSiteItemPropertiesStep;
import org.hibernate.annotations.Type;
import org.libreccm.l10n.LocalizedString; import org.libreccm.l10n.LocalizedString;
import org.librecms.assets.Person; import org.librecms.assets.Person;
import org.librecms.contentsection.ContentItem; import org.librecms.contentsection.ContentItem;
@ -21,6 +22,7 @@ import org.librecms.contenttypes.ContentTypeDescription;
import java.util.Objects; import java.util.Objects;
import javax.persistence.AssociationOverride; import javax.persistence.AssociationOverride;
import javax.persistence.Column;
import javax.persistence.Embedded; import javax.persistence.Embedded;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.JoinColumn; import javax.persistence.JoinColumn;
@ -85,43 +87,49 @@ public class ProfileSiteItem extends ContentItem {
@JoinColumn(name = "OWNER_ID") @JoinColumn(name = "OWNER_ID")
private Person owner; private Person owner;
@Embedded // @Embedded
@AssociationOverride( // @AssociationOverride(
name = "values", // name = "values",
joinTable = @JoinTable( // joinTable = @JoinTable(
name = "PROFILE_SITE_ITEMS_POSITION", // name = "PROFILE_SITE_ITEMS_POSITION",
schema = DB_SCHEMA, // schema = DB_SCHEMA,
joinColumns = { // joinColumns = {
@JoinColumn(name = "PROFILE_SITE_ITEM_ID") // @JoinColumn(name = "PROFILE_SITE_ITEM_ID")
} // }
) // )
) // )
@Column(name = "POSITION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString position; private LocalizedString position;
@Embedded // @Embedded
@AssociationOverride( // @AssociationOverride(
name = "values", // name = "values",
joinTable = @JoinTable( // joinTable = @JoinTable(
name = "PROFILE_SITE_ITEMS_INTERESTS", // name = "PROFILE_SITE_ITEMS_INTERESTS",
schema = DB_SCHEMA, // schema = DB_SCHEMA,
joinColumns = { // joinColumns = {
@JoinColumn(name = "PROFILE_SITE_ITEM_ID") // @JoinColumn(name = "PROFILE_SITE_ITEM_ID")
} // }
) // )
) // )
@Column(name = "INTERESTS")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString interests; private LocalizedString interests;
@Embedded // @Embedded
@AssociationOverride( // @AssociationOverride(
name = "values", // name = "values",
joinTable = @JoinTable( // joinTable = @JoinTable(
name = "PROFILE_SITE_ITEMS_MISC", // name = "PROFILE_SITE_ITEMS_MISC",
schema = DB_SCHEMA, // schema = DB_SCHEMA,
joinColumns = { // joinColumns = {
@JoinColumn(name = "PROFILE_SITE_ITEM_ID") // @JoinColumn(name = "PROFILE_SITE_ITEM_ID")
} // }
) // )
) // )
@Column(name = "MISC")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString misc; private LocalizedString misc;
public ProfileSiteItem() { public ProfileSiteItem() {

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

@ -333,11 +333,15 @@
<groupId>de.jpdigital</groupId> <groupId>de.jpdigital</groupId>
<artifactId>hibernate53-ddl-maven-plugin</artifactId> <artifactId>hibernate53-ddl-maven-plugin</artifactId>
<configuration> <configuration>
<dialects> <!-- <dialects>
<param>h2</param> <param>h2</param>
<param>oracle12c</param> <param>oracle12c</param>
<param>postgresql9</param> <param>postgresql9</param>
</dialects> </dialects>-->
<customDialects>
<param>org.libreccm.hibernate.dialects.LibreCcmH2Dialect</param>
<param>org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect</param>
</customDialects>
<packages> <packages>
<param>org.libreccm.categorization</param> <param>org.libreccm.categorization</param>
<param>org.libreccm.core</param> <param>org.libreccm.core</param>
@ -656,11 +660,15 @@
<groupId>de.jpdigital</groupId> <groupId>de.jpdigital</groupId>
<artifactId>hibernate53-ddl-maven-plugin</artifactId> <artifactId>hibernate53-ddl-maven-plugin</artifactId>
<configuration> <configuration>
<dialects> <!-- <dialects>
<param>h2</param> <param>h2</param>
<param>postgresql9</param> <param>postgresql9</param>
<param>oracle12c</param> <param>oracle12c</param>
</dialects> </dialects>-->
<customDialects>
<param>org.libreccm.hibernate.dialects.LibreCcmH2Dialect</param>
<param>org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect</param>
</customDialects>
<packages> <packages>
<param>org.libreccm</param> <param>org.libreccm</param>
</packages> </packages>
@ -738,10 +746,14 @@
<groupId>de.jpdigital</groupId> <groupId>de.jpdigital</groupId>
<artifactId>hibernate53-ddl-maven-plugin</artifactId> <artifactId>hibernate53-ddl-maven-plugin</artifactId>
<configuration> <configuration>
<dialects> <!-- <dialects>
<param>h2</param> <param>h2</param>
<param>postgresql9</param> <param>postgresql9</param>
</dialects> </dialects>-->
<customDialects>
<param>org.libreccm.hibernate.dialects.LibreCcmH2Dialect</param>
<param>org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect</param>
</customDialects>
<packages> <packages>
<param>org.libreccm</param> <param>org.libreccm</param>
</packages> </packages>
@ -820,10 +832,14 @@
<groupId>de.jpdigital</groupId> <groupId>de.jpdigital</groupId>
<artifactId>hibernate53-ddl-maven-plugin</artifactId> <artifactId>hibernate53-ddl-maven-plugin</artifactId>
<configuration> <configuration>
<dialects> <!-- <dialects>
<param>h2</param> <param>h2</param>
<param>postgresql9</param> <param>postgresql9</param>
</dialects> </dialects>-->
<customDialects>
<param>org.libreccm.hibernate.dialects.LibreCcmH2Dialect</param>
<param>org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect</param>
</customDialects>
<packages> <packages>
<param>org.libreccm</param> <param>org.libreccm</param>
</packages> </packages>
@ -897,10 +913,14 @@
<groupId>de.jpdigital</groupId> <groupId>de.jpdigital</groupId>
<artifactId>hibernate53-ddl-maven-plugin</artifactId> <artifactId>hibernate53-ddl-maven-plugin</artifactId>
<configuration> <configuration>
<dialects> <!-- <dialects>
<param>h2</param> <param>h2</param>
<param>postgresql9</param> <param>postgresql9</param>
</dialects> </dialects>-->
<customDialects>
<param>org.libreccm.hibernate.dialects.LibreCcmH2Dialect</param>
<param>org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect</param>
</customDialects>
<packages> <packages>
<param>org.libreccm</param> <param>org.libreccm</param>
</packages> </packages>
@ -978,10 +998,14 @@
<groupId>de.jpdigital</groupId> <groupId>de.jpdigital</groupId>
<artifactId>hibernate53-ddl-maven-plugin</artifactId> <artifactId>hibernate53-ddl-maven-plugin</artifactId>
<configuration> <configuration>
<dialects> <!-- <dialects>
<param>h2</param> <param>h2</param>
<param>postgresql9</param> <param>postgresql9</param>
</dialects> </dialects>-->
<customDialects>
<param>org.libreccm.hibernate.dialects.LibreCcmH2Dialect</param>
<param>org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect</param>
</customDialects>
<packages> <packages>
<param>org.libreccm</param> <param>org.libreccm</param>
</packages> </packages>
@ -1055,10 +1079,14 @@
<groupId>de.jpdigital</groupId> <groupId>de.jpdigital</groupId>
<artifactId>hibernate53-ddl-maven-plugin</artifactId> <artifactId>hibernate53-ddl-maven-plugin</artifactId>
<configuration> <configuration>
<dialects> <!-- <dialects>
<param>h2</param> <param>h2</param>
<param>postgresql9</param> <param>postgresql9</param>
</dialects> </dialects>-->
<customDialects>
<param>org.libreccm.hibernate.dialects.LibreCcmH2Dialect</param>
<param>org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect</param>
</customDialects>
<packages> <packages>
<param>org.libreccm</param> <param>org.libreccm</param>
</packages> </packages>

View File

@ -80,8 +80,7 @@ public class UserBanner extends SimpleComponent {
contentElem.addAttribute("screenName", contentElem.addAttribute("screenName",
user.get().getName()); user.get().getName());
contentElem.addAttribute("primaryEmail", contentElem.addAttribute("primaryEmail",
user.get().getPrimaryEmailAddress() user.get().getPrimaryEmailAddress());
.getAddress());
contentElem.addAttribute("userID", contentElem.addAttribute("userID",
Long.toString(user.get().getPartyId())); Long.toString(user.get().getPartyId()));
} }

View File

@ -267,7 +267,7 @@ class GroupAddMemberForm extends Form {
case COL_MEMBER_GIVEN_NAME: case COL_MEMBER_GIVEN_NAME:
return user.getGivenName(); return user.getGivenName();
case COL_MEMBER_EMAIL: case COL_MEMBER_EMAIL:
return user.getPrimaryEmailAddress().getAddress(); return user.getPrimaryEmailAddress();
case COL_MEMBER_ADD: case COL_MEMBER_ADD:
return new Label(new GlobalizedMessage( return new Label(new GlobalizedMessage(
"ui.admin.group_details.add_member.table.add", "ui.admin.group_details.add_member.table.add",

View File

@ -221,7 +221,7 @@ class GroupMembersTable extends Table {
case COL_MEMBER_GIVEN_NAME: case COL_MEMBER_GIVEN_NAME:
return member.getGivenName(); return member.getGivenName();
case COL_MEMBER_EMAIL: case COL_MEMBER_EMAIL:
return member.getPrimaryEmailAddress().getAddress(); return member.getPrimaryEmailAddress();
case COL_MEMBER_REMOVE: case COL_MEMBER_REMOVE:
return new Label(new GlobalizedMessage( return new Label(new GlobalizedMessage(
"ui.admin.group_details.members_table.remove", "ui.admin.group_details.members_table.remove",

View File

@ -95,8 +95,11 @@ class EmailForm extends Form {
final User user = userRepository.findById(Long.parseLong( final User user = userRepository.findById(Long.parseLong(
userIdStr)).get(); userIdStr)).get();
EmailAddress email = null; EmailAddress email = null;
if (user.getPrimaryEmailAddress().getAddress().equals(selected)) { if (user.getPrimaryEmailAddress().equals(selected)) {
email = user.getPrimaryEmailAddress(); email = new EmailAddress();
email.setAddress(user.getPrimaryEmailAddress());
email.setBouncing(user.isPrimaryEmailAddressBouncing());
email.setVerified(user.isPrimaryEmailAddressVerified());
} else { } else {
for (EmailAddress current : user.getEmailAddresses()) { for (EmailAddress current : user.getEmailAddresses()) {
if (current.getAddress().equals(selected)) { if (current.getAddress().equals(selected)) {
@ -152,9 +155,12 @@ class EmailForm extends Form {
if (selected == null) { if (selected == null) {
email = new EmailAddress(); email = new EmailAddress();
user.addEmailAddress(email); user.addEmailAddress(email);
} else if (user.getPrimaryEmailAddress().getAddress().equals( } else if (user.getPrimaryEmailAddress().equals(
selected)) { selected)) {
email = user.getPrimaryEmailAddress(); email = new EmailAddress();
email.setAddress(user.getPrimaryEmailAddress());
email.setBouncing(user.isPrimaryEmailAddressBouncing());
email.setVerified(user.isPrimaryEmailAddressVerified());
} else { } else {
for (EmailAddress current : user.getEmailAddresses()) { for (EmailAddress current : user.getEmailAddresses()) {
if (current.getAddress().equals(selected)) { if (current.getAddress().equals(selected)) {

View File

@ -64,11 +64,11 @@ class PrimaryEmailTableModel implements TableModel {
public Object getElementAt(final int columnIndex) { public Object getElementAt(final int columnIndex) {
switch(columnIndex) { switch(columnIndex) {
case COL_ADDRESS: case COL_ADDRESS:
return user.getPrimaryEmailAddress().getAddress(); return user.getPrimaryEmailAddress();
case COL_VERIFIED: case COL_VERIFIED:
return Boolean.toString(user.getPrimaryEmailAddress().isVerified()); return Boolean.toString(user.isPrimaryEmailAddressVerified());
case COL_BOUNCING: case COL_BOUNCING:
return Boolean.toString(user.getPrimaryEmailAddress().isBouncing()); return Boolean.toString(user.isPrimaryEmailAddressBouncing());
case COL_ACTION: case COL_ACTION:
return new Label(new GlobalizedMessage( return new Label(new GlobalizedMessage(
"ui.admin.user.primary_email_address.edit", ADMIN_BUNDLE)); "ui.admin.user.primary_email_address.edit", ADMIN_BUNDLE));
@ -79,7 +79,7 @@ class PrimaryEmailTableModel implements TableModel {
@Override @Override
public Object getKeyAt(final int columnIndex) { public Object getKeyAt(final int columnIndex) {
return user.getPrimaryEmailAddress().getAddress(); return user.getPrimaryEmailAddress();
} }
} }

View File

@ -201,7 +201,7 @@ class UsersTable extends Table {
case COL_GIVEN_NAME: case COL_GIVEN_NAME:
return user.getGivenName(); return user.getGivenName();
case COL_PRIMARY_EMAIL: case COL_PRIMARY_EMAIL:
return user.getPrimaryEmailAddress().getAddress(); return user.getPrimaryEmailAddress();
case COL_SCREEN_NAME: case COL_SCREEN_NAME:
return user.getName(); return user.getName();
default: default:

View File

@ -77,7 +77,7 @@ public class EmailInitListener implements FormInitListener {
data.put(m_param.getName(), user.getPrimaryEmailAddress().getAddress()); data.put(m_param.getName(), user.getPrimaryEmailAddress());
LOGGER.debug("SUCCESS"); LOGGER.debug("SUCCESS");
} }

View File

@ -116,11 +116,9 @@ public class UserEditForm extends UserForm
user.setFamilyName((String) m_lastName.getValue(state)); user.setFamilyName((String) m_lastName.getValue(state));
user.setName((String) m_screenName.getValue(state)); user.setName((String) m_screenName.getValue(state));
final String emailValue = (String) data.get(FORM_EMAIL); final String emailValue = (String) data.get(FORM_EMAIL);
if (!emailValue.equals(user.getPrimaryEmailAddress().getAddress())) { if (!emailValue.equals(user.getPrimaryEmailAddress())) {
final EmailAddress newAddress = new EmailAddress(); user.setPrimaryEmailAddress(data.get(FORM_EMAIL).toString());
newAddress.setAddress(data.get(FORM_EMAIL).toString()); user.setPrimaryEmailAddressVerified(false);
newAddress.setVerified(false);
user.setPrimaryEmailAddress(newAddress);
final ChallengeManager challengeManager = CdiUtil.createCdiUtil() final ChallengeManager challengeManager = CdiUtil.createCdiUtil()
.findBean(ChallengeManager.class); .findBean(ChallengeManager.class);

View File

@ -223,7 +223,7 @@ public abstract class UserForm extends Form
} }
m_firstName.setValue(state, user.getGivenName()); m_firstName.setValue(state, user.getGivenName());
m_lastName.setValue(state, user.getFamilyName()); m_lastName.setValue(state, user.getFamilyName());
m_email.setValue(state, user.getPrimaryEmailAddress().getAddress()); m_email.setValue(state, user.getPrimaryEmailAddress());
m_screenName.setValue(state, user.getName()); m_screenName.setValue(state, user.getName());
} }
@ -283,7 +283,7 @@ public abstract class UserForm extends Form
} }
} }
final String oldEmail = user.getPrimaryEmailAddress().getAddress(); final String oldEmail = user.getPrimaryEmailAddress();
final String email = (String) m_email.getValue(state); final String email = (String) m_email.getValue(state);
if (KernelConfig.getConfig().emailIsPrimaryIdentifier() if (KernelConfig.getConfig().emailIsPrimaryIdentifier()
&& email != null && !email.equals(oldEmail)) { && email != null && !email.equals(oldEmail)) {

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,15 +40,13 @@ 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.Column; import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.FetchType; import javax.persistence.FetchType;
import javax.persistence.JoinColumn; import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.NamedAttributeNode; import javax.persistence.NamedAttributeNode;
import javax.persistence.NamedEntityGraph; import javax.persistence.NamedEntityGraph;
@ -77,59 +75,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 +161,16 @@ 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 @Column(name = "TITLE")
@AssociationOverride( @Type(type = "org.libreccm.l10n.LocalizedStringType")
name = "values",
joinTable = @JoinTable(name = "CATEGORY_TITLES",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "OBJECT_ID")}
))
@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 @Column(name = "DESCRIPTION")
@AssociationOverride( @Type(type = "org.libreccm.l10n.LocalizedStringType")
name = "values",
joinTable = @JoinTable(name = "CATEGORY_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "OBJECT_ID")}
))
@XmlElement(name = "description", namespace = CAT_XML_NS) @XmlElement(name = "description", namespace = CAT_XML_NS)
private LocalizedString description; private LocalizedString description;

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;
@ -48,12 +49,9 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
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.JoinColumn; import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.NamedAttributeNode; import javax.persistence.NamedAttributeNode;
import javax.persistence.NamedEntityGraph; import javax.persistence.NamedEntityGraph;
@ -160,26 +158,16 @@ 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 @Column(name = "TITLE")
@AssociationOverride( @Type(type = "org.libreccm.l10n.LocalizedStringType")
name = "values",
joinTable = @JoinTable(name = "DOMAIN_TITLES",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "OBJECT_ID")}))
@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 @Column(name = "DESCRIPTION")
@AssociationOverride( @Type(type = "org.libreccm.l10n.LocalizedStringType")
name = "values",
joinTable = @JoinTable(name = "DOMAIN_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "OBJECT_ID")}))
@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,8 @@ public class LocalizedStringSetting
private static final long serialVersionUID = 667750736151545279L; private static final long serialVersionUID = 667750736151545279L;
@Embedded @Column(name = "SETTING_VALUE_LOCALIZED_STRING")
@AssociationOverride( @Type(type = "org.libreccm.l10n.LocalizedStringType")
name = "values",
joinTable = @JoinTable(name = "SETTINGS_L10N_STR_VALUES",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "ENTRY_ID")}))
private LocalizedString value; private LocalizedString value;
public LocalizedStringSetting() { public LocalizedStringSetting() {

View File

@ -18,11 +18,6 @@
*/ */
package org.libreccm.core; package org.libreccm.core;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotBlank;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlRootElement;
@ -32,38 +27,39 @@ import java.util.Objects;
import static org.libreccm.core.CoreConstants.CORE_XML_NS; import static org.libreccm.core.CoreConstants.CORE_XML_NS;
import javax.json.Json; import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder; import javax.json.JsonObjectBuilder;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
/** /**
* An embeddable entity for storing email addresses. * An embeddable entity for storing email addresses.
* *
* In contrast to its predecessor {@code com.arsdigita.kernel.EmailAddress} * In contrast to its predecessor {@code com.arsdigita.kernel.EmailAddress} this
* this class does not provide verification methods. Verification is done using * class does not provide verification methods. Verification is done using the
* the <em>Bean Validiation API</em> (Hibernate Validator is used as * <em>Bean Validiation API</em> (Hibernate Validator is used as
* implementation). * implementation).
* *
* Because this class is an embeddable JPA entity it can be used in other * This class is inteded to maps a JSONB column using the
* entities to store eMail addresses. * {@link EmailAddressType}, or if a list of email addresses should be stored,
* the {@link EmailAddressListType}.
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/ */
@Embeddable @Deprecated
@XmlRootElement(name = "email-address", namespace = CORE_XML_NS) @XmlRootElement(name = "email-address", namespace = CORE_XML_NS)
public class EmailAddress implements Serializable { public class EmailAddress implements Serializable {
private static final long serialVersionUID = -4076089589412432766L; private static final long serialVersionUID = -4076089589412432766L;
@Column(name = "EMAIL_ADDRESS", length = 512, nullable = false)
@XmlElement(name = "address", namespace = CORE_XML_NS, required = true) @XmlElement(name = "address", namespace = CORE_XML_NS, required = true)
@NotBlank @NotBlank
@Email @Email
private String address; private String address;
@Column(name = "BOUNCING")
@XmlElement(name = "bouncing", namespace = CORE_XML_NS) @XmlElement(name = "bouncing", namespace = CORE_XML_NS)
private boolean bouncing; private boolean bouncing;
@Column(name = "VERIFIED")
@XmlElement(name = "verified", namespace = CORE_XML_NS) @XmlElement(name = "verified", namespace = CORE_XML_NS)
private boolean verified; private boolean verified;
@ -126,6 +122,14 @@ public class EmailAddress implements Serializable {
return obj instanceof EmailAddress; return obj instanceof EmailAddress;
} }
public static EmailAddress fromJson(final JsonObject jsonObject) {
final EmailAddress address = new EmailAddress();
address.setAddress(jsonObject.getString("address"));
address.setBouncing(jsonObject.getBoolean("bouncing"));
address.setVerified(jsonObject.getBoolean("verified"));
return address;
}
public JsonObjectBuilder buildJson() { public JsonObjectBuilder buildJson() {
return Json return Json
.createObjectBuilder() .createObjectBuilder()
@ -134,6 +138,10 @@ public class EmailAddress implements Serializable {
.add("verified", verified); .add("verified", verified);
} }
public JsonObject toJson() {
return buildJson().build();
}
@Override @Override
public String toString() { public String toString() {
return String.format("%s{ " return String.format("%s{ "

View File

@ -0,0 +1,62 @@
/*
* 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.core;
import org.libreccm.hibernate.AbstractCcmJsonUserType;
import java.util.List;
import java.util.stream.Collectors;
import javax.json.Json;
import javax.json.JsonArrayBuilder;
import javax.json.JsonReader;
import javax.json.JsonValue;
import javax.json.JsonWriter;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class EmailAddressListType extends AbstractCcmJsonUserType {
@Override
protected Object nullSafeGet(final JsonReader jsonReader) {
return jsonReader
.readArray()
.stream()
.map(JsonValue::asJsonObject)
.map(EmailAddress::fromJson)
.collect(Collectors.toList());
}
@Override
protected void nullSafeSet(
final Object value, final JsonWriter jsonWriter
) {
@SuppressWarnings("unchecked")
final List<EmailAddress> addresses = (List<EmailAddress>) value;
final JsonArrayBuilder jsonArrayBuilder = Json.createArrayBuilder();
addresses
.stream()
.map(EmailAddress::buildJson)
.forEach(jsonArrayBuilder::add);
jsonWriter.writeArray(jsonArrayBuilder.build());
}
}

View File

@ -0,0 +1,45 @@
/*
* 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.core;
import org.libreccm.hibernate.AbstractCcmJsonUserType;
import javax.json.JsonReader;
import javax.json.JsonWriter;
/**
* Hibernate User type mapping instances of {@link EmailAddress} to a JSON.
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class EmailAddressType extends AbstractCcmJsonUserType {
@Override
protected Object nullSafeGet(final JsonReader jsonReader) {
return EmailAddress.fromJson(jsonReader.readObject());
}
@Override
protected void nullSafeSet(
final Object value, final JsonWriter jsonWriter
) {
jsonWriter.writeObject(((EmailAddress) value).toJson());
}
}

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;
@ -37,13 +38,9 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
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.FetchType; import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries; import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery; import javax.persistence.NamedQuery;
@ -82,25 +79,15 @@ public class Resource extends CcmObject implements Serializable, Exportable {
/** /**
* A localisable title for the {@code Resource}. * A localisable title for the {@code Resource}.
*/ */
@Embedded @Column(name = "TITLE")
@AssociationOverride( @Type(type = "org.libreccm.l10n.LocalizedStringType")
name = "values",
joinTable = @JoinTable(name = "RESOURCE_TITLES",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "OBJECT_ID")}))
private LocalizedString title; private LocalizedString title;
/** /**
* A localisable description for the {@code Resource}. * A localisable description for the {@code Resource}.
*/ */
@Embedded @Column(name = "DESCRIPTION")
@AssociationOverride( @Type(type = "org.libreccm.l10n.LocalizedStringType")
name = "values",
joinTable = @JoinTable(name = "RESOURCE_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "OBJECT_ID")}))
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,8 @@ 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 @Column(name = "DESCRIPTION")
@AssociationOverride( @Type(type = "org.libreccm.l10n.LocalizedStringType")
name = "values",
joinTable = @JoinTable(name = "RESOURCE_TYPE_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "RESOURCE_TYPE_ID")}))
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,8 @@ public class Component extends CcmObject implements Serializable {
@Column(name = "ADMIN_NAME") @Column(name = "ADMIN_NAME")
private String adminName; private String adminName;
@Embedded @Column(name = "DESCRIPTION")
@AssociationOverride( @Type(type = "org.libreccm.l10n.LocalizedStringType")
name = "values",
joinTable = @JoinTable(name = "FORMBUILDER_COMPONENT_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "COMPONENT_ID")}))
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,163 @@
/*
* 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;
import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.usertype.UserType;
import org.libreccm.l10n.LocalizedString;
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.JsonReader;
import javax.json.JsonWriter;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public abstract class AbstractCcmJsonUserType 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;
} else {
try (StringReader strReader = new StringReader(cellContent);
JsonReader jsonReader = Json.createReader(strReader)) {
return nullSafeGet(jsonReader);
}
}
}
protected abstract Object nullSafeGet(final JsonReader jsonReader);
@Override
public void nullSafeSet(
final PreparedStatement statement,
final Object value,
final int index,
final SharedSessionContractImplementor session
) throws HibernateException, SQLException {
if (value == null) {
statement.setObject(index, null, Types.OTHER);
} else {
try (StringWriter strWriter = new StringWriter();
JsonWriter jsonWriter = Json.createWriter(strWriter)) {
nullSafeSet(value, jsonWriter);
statement.setObject(index, strWriter.toString(), Types.OTHER);
}catch (IOException ex) {
throw new HibernateException(ex);
}
}
}
protected abstract void nullSafeSet(
final Object value, final JsonWriter jsonWriter
);
@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 (ByteArrayInputStream bais = new ByteArrayInputStream(serialized);
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

@ -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,31 +37,38 @@ import java.util.Set;
import static org.libreccm.l10n.L10NConstants.L10N_XML_NS; import static org.libreccm.l10n.L10NConstants.L10N_XML_NS;
import org.hibernate.annotations.Type;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import javax.persistence.Column;
/** /**
* A helper class for localisable string properties. This class is declared as * A helper class for localisable string properties. For using this class a
* embeddable, so that it can be used in every other entity. The localised * Hibernate User type is provided ({@link LocalizedStringType} which maps
* instances of this class to a JSONB column in the database. The localised
* values are stored in a {@link Map}. This class is <em>not</em> designed to be * values are stored in a {@link Map}. This class is <em>not</em> designed to be
* overwritten. But because it is an entity class we can't make the class final. * overwritten. But because it is an entity class we can't make the class final.
* *
* To use this class you must annoate this property with the {@link Type}
* annotation provided by hibernate. The {@link Column} annotation can used
* a usual to set the name of the database column. Example
*
* <pre>
* @Column(name = "DESCRIPTION")
@Type(type = "org.libreccm.l10n.LocalizedStringType")
private LocalizedString description;
* </pre>
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/ */
@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 {
private static final long serialVersionUID = 7378282657084330425L; private static final long serialVersionUID = 7378282657084330425L;
/**
* 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
@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 +201,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,45 @@
/*
* 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.libreccm.hibernate.AbstractCcmJsonUserType;
import javax.json.JsonReader;
import javax.json.JsonWriter;
/**
* Hibernate User type mapping instances of {@link LocalizedString} to a JSON.
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class LocalizedStringType extends AbstractCcmJsonUserType {
@Override
protected Object nullSafeGet(final JsonReader jsonReader) {
return LocalizedString.fromJson(jsonReader.readObject());
}
@Override
protected void nullSafeSet(
final Object value, final JsonWriter jsonWriter
) {
jsonWriter.writeObject(((LocalizedString) value).toJson());
}
}

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;
@ -33,9 +34,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
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.EnumType; import javax.persistence.EnumType;
import javax.persistence.Enumerated; import javax.persistence.Enumerated;
@ -45,7 +44,6 @@ 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.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries; import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery; import javax.persistence.NamedQuery;
@ -225,27 +223,15 @@ 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 @Column(name = "TITLE")
@AssociationOverride( @Type(type = "org.libreccm.l10n.LocalizedStringType")
name = "values",
joinTable = @JoinTable(name = "PAGE_MODEL_TITLES",
schema = CoreConstants.DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "PAGE_MODEL_ID")
}))
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 @Column(name = "DESCRIPTION")
@AssociationOverride( @Type(type = "org.libreccm.l10n.LocalizedStringType")
name = "values",
joinTable = @JoinTable(name = "PAGE_MODEL_DESCRIPTIONS",
schema = CoreConstants.DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "PAGE_MODEL_ID")
}))
private LocalizedString description; private LocalizedString description;
/** /**

View File

@ -154,7 +154,7 @@ public class ChallengeManager {
submittedToken, submittedToken,
OneTimeAuthTokenPurpose.EMAIL_VERIFICATION)) { OneTimeAuthTokenPurpose.EMAIL_VERIFICATION)) {
user.getPrimaryEmailAddress().setVerified(true); user.setPrimaryEmailAddressVerified(true);
userRepository.save(user); userRepository.save(user);
} else { } else {
@ -344,7 +344,7 @@ public class ChallengeManager {
.getURL()); .getURL());
final ParameterMap params = new ParameterMap(); final ParameterMap params = new ParameterMap();
params.setParameter("email", user.getPrimaryEmailAddress().getAddress()); params.setParameter("email", user.getPrimaryEmailAddress());
params.setParameter("token", token.getToken()); params.setParameter("token", token.getToken());
values.put("full_link", values.put("full_link",
URL.there(request, URL.there(request,
@ -505,7 +505,7 @@ public class ChallengeManager {
final KernelConfig kernelConfig = configurationManager final KernelConfig kernelConfig = configurationManager
.findConfiguration(KernelConfig.class); .findConfiguration(KernelConfig.class);
final Mail mail = new Mail(user.getPrimaryEmailAddress().getAddress(), final Mail mail = new Mail(user.getPrimaryEmailAddress(),
kernelConfig.getSystemEmailAddress(), kernelConfig.getSystemEmailAddress(),
subject); subject);
mail.setBody(text); mail.setBody(text);

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;
@ -39,16 +40,12 @@ import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
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.FetchType; import javax.persistence.FetchType;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType; import javax.persistence.GenerationType;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.NamedAttributeNode; import javax.persistence.NamedAttributeNode;
import javax.persistence.NamedEntityGraph; import javax.persistence.NamedEntityGraph;
import javax.persistence.NamedEntityGraphs; import javax.persistence.NamedEntityGraphs;
@ -182,16 +179,10 @@ public class Role implements Serializable, Exportable {
/** /**
* An optional description for a role. * An optional description for a role.
*/ */
@Embedded @Column(name = "DESCRIPTION")
@AssociationOverride( @Type(type = "org.libreccm.l10n.LocalizedStringType")
name = "values",
joinTable = @JoinTable(name = "ROLE_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "ROLE_ID")
}))
@XmlElement(name = "description", namespace = CORE_XML_NS) @XmlElement(name = "description", namespace = CORE_XML_NS)
private LocalizedString description = new LocalizedString(); private LocalizedString description;
/** /**
* All memberships of the roles. * All memberships of the roles.
@ -200,7 +191,7 @@ public class Role implements Serializable, Exportable {
@XmlElementWrapper(name = "role-memberships", namespace = CORE_XML_NS) @XmlElementWrapper(name = "role-memberships", namespace = CORE_XML_NS)
@XmlElement(name = "role-membership", namespace = CORE_XML_NS) @XmlElement(name = "role-membership", namespace = CORE_XML_NS)
@JsonIgnore @JsonIgnore
private Set<RoleMembership> memberships = new HashSet<>(); private Set<RoleMembership> memberships;
/** /**
* Permissions granted to the role. * Permissions granted to the role.
@ -210,14 +201,18 @@ public class Role implements Serializable, Exportable {
@XmlElementWrapper(name = "permissions", namespace = CORE_XML_NS) @XmlElementWrapper(name = "permissions", namespace = CORE_XML_NS)
@XmlElement(name = "permission", namespace = CORE_XML_NS) @XmlElement(name = "permission", namespace = CORE_XML_NS)
@JsonIgnore @JsonIgnore
private List<Permission> permissions = new ArrayList<>(); private List<Permission> permissions;
@OneToMany(mappedBy = "role", fetch = FetchType.LAZY) @OneToMany(mappedBy = "role", fetch = FetchType.LAZY)
@JsonIgnore @JsonIgnore
private List<TaskAssignment> assignedTasks = new ArrayList<>(); private List<TaskAssignment> assignedTasks;
public Role() { public Role() {
super(); super();
description = new LocalizedString();
memberships = new HashSet<>();
permissions = new ArrayList<>();
assignedTasks = new ArrayList<>();
} }
public long getRoleId() { public long getRoleId() {
@ -254,7 +249,7 @@ public class Role implements Serializable, Exportable {
} }
protected void setMemberships(final Set<RoleMembership> memberships) { protected void setMemberships(final Set<RoleMembership> memberships) {
this.memberships = memberships; this.memberships = new HashSet<>(memberships);
} }
protected void addMembership(final RoleMembership membership) { protected void addMembership(final RoleMembership membership) {
@ -274,7 +269,7 @@ public class Role implements Serializable, Exportable {
} }
protected void setPermissions(final List<Permission> permissions) { protected void setPermissions(final List<Permission> permissions) {
this.permissions = permissions; this.permissions = new ArrayList<>(permissions);
} }
protected void addPermission(final Permission permission) { protected void addPermission(final Permission permission) {
@ -294,7 +289,7 @@ public class Role implements Serializable, Exportable {
} }
protected void setAssignedTasks(final List<TaskAssignment> assignedTasks) { protected void setAssignedTasks(final List<TaskAssignment> assignedTasks) {
this.assignedTasks = assignedTasks; this.assignedTasks = new ArrayList<>(assignedTasks);
} }
public void addAssignedTask(final TaskAssignment taskAssignment) { public void addAssignedTask(final TaskAssignment taskAssignment) {
@ -306,7 +301,7 @@ public class Role implements Serializable, Exportable {
} }
public LocalizedString getDescription() { public LocalizedString getDescription() {
return this.description; return description;
} }
public void setDescription(final LocalizedString description) { public void setDescription(final LocalizedString description) {

View File

@ -85,9 +85,9 @@ public class SystemUsersSetup {
admin.setName(adminName); admin.setName(adminName);
admin.setFamilyName(adminFamilyName); admin.setFamilyName(adminFamilyName);
admin.setGivenName(adminGivenName); admin.setGivenName(adminGivenName);
final EmailAddress adminEmail = new EmailAddress(); admin.setPrimaryEmailAddress(adminEmailAddress);
adminEmail.setAddress(adminEmailAddress); admin.setPrimaryEmailAddressBouncing(false);
admin.setPrimaryEmailAddress(adminEmail); admin.setPrimaryEmailAddressVerified(true);
admin.setPassword(adminPassword); admin.setPassword(adminPassword);
final Role adminRole = new Role(); final Role adminRole = new Role();
@ -119,9 +119,9 @@ public class SystemUsersSetup {
user.setName("public-user"); user.setName("public-user");
user.setFamilyName("LibreCCM"); user.setFamilyName("LibreCCM");
user.setGivenName("Public User"); user.setGivenName("Public User");
final EmailAddress email = new EmailAddress(); user.setPrimaryEmailAddress("public-user@localhost");
email.setAddress("public-user@localhost"); user.setPrimaryEmailAddressBouncing(false);
user.setPrimaryEmailAddress(email); user.setPrimaryEmailAddressVerified(true);
entityManager.persist(user); entityManager.persist(user);
} }

View File

@ -30,6 +30,7 @@ import java.io.Serializable;
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.core.api.JsonArrayCollector; import org.libreccm.core.api.JsonArrayCollector;
import org.libreccm.imexport.Exportable; import org.libreccm.imexport.Exportable;
@ -43,22 +44,23 @@ import java.util.Set;
import javax.json.Json; import javax.json.Json;
import javax.json.JsonArrayBuilder; import javax.json.JsonArrayBuilder;
import javax.json.JsonObjectBuilder; import javax.json.JsonObjectBuilder;
import javax.persistence.AssociationOverride;
import javax.persistence.CollectionTable;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.ElementCollection; import javax.persistence.ColumnResult;
import javax.persistence.Embedded;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.EntityResult;
import javax.persistence.FetchType; import javax.persistence.FetchType;
import javax.persistence.JoinColumn; import javax.persistence.FieldResult;
import javax.persistence.JoinTable;
import javax.persistence.NamedAttributeNode; import javax.persistence.NamedAttributeNode;
import javax.persistence.NamedEntityGraph; import javax.persistence.NamedEntityGraph;
import javax.persistence.NamedEntityGraphs; import javax.persistence.NamedEntityGraphs;
import javax.persistence.NamedNativeQueries;
import javax.persistence.NamedNativeQuery;
import javax.persistence.NamedQueries; import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery; import javax.persistence.NamedQuery;
import javax.persistence.NamedSubgraph; import javax.persistence.NamedSubgraph;
import javax.persistence.OneToMany; import javax.persistence.OneToMany;
import javax.persistence.SqlResultSetMapping;
import javax.persistence.SqlResultSetMappings;
import javax.persistence.Table; import javax.persistence.Table;
import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAccessorType;
@ -76,43 +78,45 @@ import javax.xml.bind.annotation.XmlTransient;
@Entity @Entity
@Table(name = "USERS", schema = DB_SCHEMA) @Table(name = "USERS", schema = DB_SCHEMA)
@NamedQueries({ @NamedQueries({
@NamedQuery(name = "User.findByUuid", @NamedQuery(
query = "SELECT u FROM User u WHERE u.uuid = :uuid"), name = "User.findByUuid",
@NamedQuery(name = "User.findByName", query = "SELECT u FROM User u WHERE u.uuid = :uuid"
),
@NamedQuery(
name = "User.findByName",
query = "SELECT u FROM User u WHERE u.name = :name " query = "SELECT u FROM User u WHERE u.name = :name "
+ "ORDER BY u.name, " + "ORDER BY u.name, "
+ " u.familyName, " + " u.familyName, "
+ " u.givenName, " + " u.givenName"
+ " u.primaryEmailAddress.address"), ),
@NamedQuery(name = "User.countByName", @NamedQuery(name = "User.countByName",
query = "SELECT COUNT(u) FROM User u WHERE u.name = :name"), query = "SELECT COUNT(u) FROM User u WHERE u.name = :name"),
@NamedQuery(name = "User.findByEmailAddress", @NamedQuery(name = "User.findByEmailAddress",
query = "SELECT u FROM User u WHERE " query = "SELECT u FROM User u WHERE "
+ "u.primaryEmailAddress.address = :emailAddress " + "u.primaryEmailAddress = :emailAddress "
+ "ORDER BY u.name, " + "ORDER BY u.name, "
+ " u.familyName, " + " u.familyName, "
+ " u.givenName, " + " u.givenName, "
+ " u.primaryEmailAddress.address"), + " u.primaryEmailAddress"),
@NamedQuery(name = "User.countByPrimaryEmailAddress", @NamedQuery(name = "User.countByPrimaryEmailAddress",
query = "SELECT COUNT(u) FROM User u " query = "SELECT COUNT(u) FROM User u "
+ "WHERE u.primaryEmailAddress.address = :emailAddress"), + "WHERE u.primaryEmailAddress = :emailAddress"),
@NamedQuery( @NamedQuery(
name = "User.filterByNameAndEmail", name = "User.filterByNameAndEmail",
query = "SELECT u FROM User u WHERE " query = "SELECT u FROM User u WHERE "
+ "LOWER(u.name) LIKE CONCAT(LOWER(:term), '%') " + "LOWER(u.name) LIKE CONCAT(LOWER(:term), '%') "
+ "OR LOWER(u.givenName) LIKE CONCAT(LOWER(:term), '%') " + "OR LOWER(u.givenName) LIKE CONCAT(LOWER(:term), '%') "
+ "OR LOWER(u.familyName) LIKE CONCAT(LOWER(:term), '%')" + "OR LOWER(u.familyName) LIKE CONCAT(LOWER(:term), '%')"
+ "OR LOWER(u.primaryEmailAddress.address) LIKE CONCAT('%', LOWER(:term), '%') "
+ "ORDER BY u.name," + "ORDER BY u.name,"
+ "u.familyName, " + "u.familyName, "
+ "u.givenName, " + "u.givenName"
+ "u.primaryEmailAddress.address"), ),
@NamedQuery( @NamedQuery(
name = "User.findAllOrderedByUsername", name = "User.findAllOrderedByUsername",
query = "SELECT u FROM User u ORDER BY u.name, " query = "SELECT u FROM User u ORDER BY u.name, "
+ " u.familyName, " + " u.familyName, "
+ " u.givenName, " + " u.givenName, "
+ " u.primaryEmailAddress.address"), + " u.primaryEmailAddress"),
@NamedQuery(name = "User.findByGroup", @NamedQuery(name = "User.findByGroup",
query = "SELECT u FROM User u " query = "SELECT u FROM User u "
+ "JOIN u.groupMemberships m " + "JOIN u.groupMemberships m "
@ -170,26 +174,23 @@ public class User extends Party implements Serializable, Exportable {
/** /**
* The primary email address of the user. * The primary email address of the user.
*/ */
@Embedded @Column(name = "PRIMARY_EMAIL_ADDRESS")
@AssociationOverride(
name = "USER_PRIMARY_EMAIL_ADDRESSES",
joinTable = @JoinTable(name = "USER_PRIMARY_EMAIL_ADDRESSES",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "USER_ID")
}))
@NotNull @NotNull
@XmlElement(name = "primary-email-address", namespace = CORE_XML_NS) @XmlElement(name = "primary-email-address", namespace = CORE_XML_NS)
private EmailAddress primaryEmailAddress; private String primaryEmailAddress;
@Column(name = "PRIMARY_EMAIL_ADDRESS_BOUNCING")
private boolean primaryEmailAddressBouncing;
@Column(name = "PRIMARY_EMAIL_ADDRESS_VERIFIED")
private boolean primaryEmailAddressVerified;
/** /**
* Additional email addresses of the user. * Additional email addresses of the user.
*/ */
@ElementCollection(fetch = FetchType.EAGER) @Column(name = "EMAIL_ADDRESSES")
@CollectionTable(name = "USER_EMAIL_ADDRESSES", @Type(type = "org.libreccm.core.EmailAddressListType")
schema = DB_SCHEMA, @Deprecated
joinColumns = {
@JoinColumn(name = "USER_ID")})
@XmlElementWrapper(name = "email-addresses", namespace = CORE_XML_NS) @XmlElementWrapper(name = "email-addresses", namespace = CORE_XML_NS)
@XmlElement(name = "email-address", namespace = CORE_XML_NS) @XmlElement(name = "email-address", namespace = CORE_XML_NS)
private List<EmailAddress> emailAddresses; private List<EmailAddress> emailAddresses;
@ -250,14 +251,31 @@ public class User extends Party implements Serializable, Exportable {
this.familyName = familyName; this.familyName = familyName;
} }
public EmailAddress getPrimaryEmailAddress() { public String getPrimaryEmailAddress() {
return primaryEmailAddress; return primaryEmailAddress;
} }
public void setPrimaryEmailAddress(final EmailAddress primaryEmailAddress) { public void setPrimaryEmailAddress(final String primaryEmailAddress) {
this.primaryEmailAddress = primaryEmailAddress; this.primaryEmailAddress = primaryEmailAddress;
} }
public boolean isPrimaryEmailAddressBouncing() {
return primaryEmailAddressBouncing;
}
public void setPrimaryEmailAddressBouncing(final boolean bouncing) {
primaryEmailAddressBouncing = bouncing;
}
public boolean isPrimaryEmailAddressVerified() {
return primaryEmailAddressVerified;
}
public void setPrimaryEmailAddressVerified(final boolean verified) {
primaryEmailAddressVerified = verified;
}
@Deprecated
public List<EmailAddress> getEmailAddresses() { public List<EmailAddress> getEmailAddresses() {
if (emailAddresses == null) { if (emailAddresses == null) {
return null; return null;
@ -266,6 +284,7 @@ public class User extends Party implements Serializable, Exportable {
} }
} }
@Deprecated
protected void setEmailAddresses(final List<EmailAddress> emailAddresses) { protected void setEmailAddresses(final List<EmailAddress> emailAddresses) {
this.emailAddresses = new ArrayList<>(emailAddresses); this.emailAddresses = new ArrayList<>(emailAddresses);
} }
@ -363,7 +382,8 @@ public class User extends Party implements Serializable, Exportable {
@Override @Override
public JsonObjectBuilder buildJson() { public JsonObjectBuilder buildJson() {
final JsonArrayBuilder emailAddressesArrayBuilder = Json.createArrayBuilder(); final JsonArrayBuilder emailAddressesArrayBuilder = Json
.createArrayBuilder();
emailAddresses emailAddresses
.stream() .stream()
@ -374,7 +394,9 @@ public class User extends Party implements Serializable, Exportable {
.buildJson() .buildJson()
.add("givenName", givenName) .add("givenName", givenName)
.add("familyName", familyName) .add("familyName", familyName)
.add("primaryEmailAddress", primaryEmailAddress.buildJson()) .add("primaryEmailAddress", primaryEmailAddress)
.add("primaryEmailAddressBouncing", primaryEmailAddressBouncing)
.add("primaryEmailAddressVerified", primaryEmailAddressVerified)
.add( .add(
"emailAddresses", "emailAddresses",
emailAddresses emailAddresses

View File

@ -94,10 +94,9 @@ public class UserManager implements Serializable {
user.setGivenName(givenName); user.setGivenName(givenName);
user.setFamilyName(familyName); user.setFamilyName(familyName);
user.setName(name); user.setName(name);
final EmailAddress email = new EmailAddress(); user.setPrimaryEmailAddress(emailAddress);
email.setAddress(emailAddress); user.setPrimaryEmailAddressBouncing(false);
user.setPrimaryEmailAddress(email); user.setPrimaryEmailAddressVerified(true);
email.setVerified(true);
if (password == null) { if (password == null) {
user.setPassword(null); user.setPassword(null);
} else { } else {
@ -131,7 +130,7 @@ public class UserManager implements Serializable {
final KernelConfig kernelConfig = confManager.findConfiguration( final KernelConfig kernelConfig = confManager.findConfiguration(
KernelConfig.class); KernelConfig.class);
if (kernelConfig.emailIsPrimaryIdentifier()) { if (kernelConfig.emailIsPrimaryIdentifier()) {
userIdentifier = user.getPrimaryEmailAddress().getAddress(); userIdentifier = user.getPrimaryEmailAddress();
} else { } else {
userIdentifier = user.getName(); userIdentifier = user.getName();
} }

View File

@ -18,8 +18,11 @@
*/ */
package org.libreccm.security; package org.libreccm.security;
import org.hibernate.Session;
import org.libreccm.core.AbstractEntityRepository; import org.libreccm.core.AbstractEntityRepository;
import org.libreccm.core.CoreConstants; import org.libreccm.core.CoreConstants;
import org.libreccm.core.EmailAddressListType;
import org.libreccm.core.EmailAddressType;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.persistence.EntityGraph; import javax.persistence.EntityGraph;
@ -30,6 +33,9 @@ import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.UUID; import java.util.UUID;
import javax.persistence.NoResultException;
import javax.persistence.Query;
/** /**
* Repository for user objects. * Repository for user objects.
* *
@ -138,11 +144,15 @@ public class UserRepository extends AbstractEntityRepository<Long, User> {
* is no matching user {@code null} is returned. * is no matching user {@code null} is returned.
*/ */
public Optional<User> findByEmailAddress(final String emailAddress) { public Optional<User> findByEmailAddress(final String emailAddress) {
final TypedQuery<User> query = getEntityManager().createNamedQuery( try {
"User.findByEmailAddress", User.class); return getSingleResult(
query.setParameter("emailAddress", emailAddress); getEntityManager()
.createNamedQuery("User.findByEmailAddress", User.class)
return getSingleResult(query); .setParameter("emailAddress", emailAddress)
);
} catch (NoResultException ex) {
return Optional.empty();
}
} }
public Optional<User> findByEmailAddress(final String emailAddress, public Optional<User> findByEmailAddress(final String emailAddress,
@ -210,8 +220,6 @@ public class UserRepository extends AbstractEntityRepository<Long, User> {
entity.setUuid(UUID.randomUUID().toString()); entity.setUuid(UUID.randomUUID().toString());
} }
@AuthorizationRequired @AuthorizationRequired
@RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)

View File

@ -36,9 +36,9 @@ 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.Embedded;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.EnumType; import javax.persistence.EnumType;
import javax.persistence.Enumerated; import javax.persistence.Enumerated;
@ -49,7 +49,6 @@ 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.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries; import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery; import javax.persistence.NamedQuery;
@ -147,25 +146,15 @@ public class Task implements Identifiable, Serializable {
/** /**
* A human readable, localisable label for the task. * A human readable, localisable label for the task.
*/ */
@Embedded @Column(name = "LABEL")
@AssociationOverride( @Type(type = "org.libreccm.l10n.LocalizedStringType")
name = "values",
joinTable = @JoinTable(name = "WORKFLOW_TASK_LABELS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "TASK_ID")}))
private LocalizedString label; private LocalizedString label;
/** /**
* A description of the task. * A description of the task.
*/ */
@Embedded @Column(name = "DESCRIPTION")
@AssociationOverride( @Type(type = "org.libreccm.l10n.LocalizedStringType")
name = "values",
joinTable = @JoinTable(name = "WORKFLOW_TASK_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "TASK_ID")}))
private LocalizedString description; private LocalizedString description;
/** /**

View File

@ -26,9 +26,7 @@ import org.libreccm.core.CcmObject;
import org.libreccm.core.Identifiable; import org.libreccm.core.Identifiable;
import org.libreccm.l10n.LocalizedString; import org.libreccm.l10n.LocalizedString;
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.EnumType; import javax.persistence.EnumType;
import javax.persistence.Enumerated; import javax.persistence.Enumerated;
@ -39,7 +37,6 @@ 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.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries; import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery; import javax.persistence.NamedQuery;
@ -56,6 +53,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 +114,15 @@ public class Workflow implements Identifiable, Serializable, Exportable {
/** /**
* Human readable name of the workflow. * Human readable name of the workflow.
*/ */
@Embedded @Column(name = "NAME")
@AssociationOverride( @Type(type = "org.libreccm.l10n.LocalizedStringType")
name = "values",
joinTable = @JoinTable(name = "WORKFLOW_NAMES",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "WORKFLOW_ID")}))
private LocalizedString name = new LocalizedString(); private LocalizedString name = new LocalizedString();
/** /**
* Description of the workflow. * Description of the workflow.
*/ */
@Embedded @Column(name = "DESCRIPTION")
@AssociationOverride( @Type(type = "org.libreccm.l10n.LocalizedStringType")
name = "values",
joinTable = @JoinTable(name = "WORKFLOW_DESCRIPTIONS",
schema = DB_SCHEMA,
joinColumns = {
@JoinColumn(name = "WORKFLOW_ID")
}))
private LocalizedString description = new LocalizedString(); private LocalizedString description = new LocalizedString();
/** /**

View File

@ -0,0 +1,13 @@
ALTER TABLE ccm_core.users ADD COLUMN primary_email_address varchar(255);
ALTER TABLE ccm_core.users ADD COLUMN primary_email_address_bouncing boolean;
ALTER TABLE ccm_core.users ADD COLUMN primary_email_address_verified boolean;
ALTER TABLE ccm_core.users ADD COLUMN email_addresses JSONB;
UPDATE ccm_core.users
SET primary_email_address = email_address,
primary_email_address_bouncing = bouncing,
primary_email_address_verified = verified
);
DROP TABLE ccm_core.user_email_addresses;
ALTER TABLE ccm_core.users DROP COLUMN email_address;
ALTER TABLE ccm_core.users DROP COLUMN bouncing;
ALTER TABLE ccm_core.users DROP COLUMN verified;

View File

@ -147,6 +147,16 @@ public class CategoryManagerTest {
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(com.arsdigita.kernel.KernelConfig.class) .addClass(com.arsdigita.kernel.KernelConfig.class)
.addClass(com.arsdigita.kernel.security.SecurityConfig.class) .addClass(com.arsdigita.kernel.security.SecurityConfig.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("configs/shiro.ini", "shiro.ini") .addAsResource("configs/shiro.ini", "shiro.ini")
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
@ -397,8 +407,7 @@ public class CategoryManagerTest {
@UsingDataSet("datasets/org/libreccm/categorization/CategoryManagerTest" @UsingDataSet("datasets/org/libreccm/categorization/CategoryManagerTest"
+ "/data.yml") + "/data.yml")
@ShouldMatchDataSet( @ShouldMatchDataSet(
excludeColumns = { excludeColumns = {},
},
value = "datasets/org/libreccm/categorization/CategoryManagerTest" value = "datasets/org/libreccm/categorization/CategoryManagerTest"
+ "/after-remove-obj-from-category.yml" + "/after-remove-obj-from-category.yml"
) )
@ -751,7 +760,7 @@ public class CategoryManagerTest {
/** /**
* Tries to retrieve the index object from several categories and verifies * Tries to retrieve the index object from several categories and verifies
* that the expected object is returned by null null null null null null * that the expected object is returned by null null null null null null
* null null {@link CategoryManager#getIndexObject(org.libreccm.categorization.Category). * null null null {@link CategoryManager#getIndexObject(org.libreccm.categorization.Category).
*/ */
@Test @Test
@UsingDataSet( @UsingDataSet(

View File

@ -133,6 +133,16 @@ public class CategoryRepositoryTest {
.addClass(com.arsdigita.kernel.KernelConfig.class) .addClass(com.arsdigita.kernel.KernelConfig.class)
.addClass(com.arsdigita.kernel.security.SecurityConfig.class) .addClass(com.arsdigita.kernel.security.SecurityConfig.class)
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("configs/shiro.ini", "shiro.ini") .addAsResource("configs/shiro.ini", "shiro.ini")
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",

View File

@ -124,6 +124,16 @@ public class ConfigurationManagerTest {
.addClass(com.arsdigita.kernel.security.SecurityConfig.class) .addClass(com.arsdigita.kernel.security.SecurityConfig.class)
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage()) .addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("configs/shiro.ini", "shiro.ini") .addAsResource("configs/shiro.ini", "shiro.ini")
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",

View File

@ -105,15 +105,21 @@ public class CcmObjectRepositoryTest {
.create(WebArchive.class, .create(WebArchive.class,
"LibreCCM-org.libreccm.core.CcmObjectRepositoryTest.war") "LibreCCM-org.libreccm.core.CcmObjectRepositoryTest.war")
.addPackage(org.libreccm.auditing.CcmRevision.class.getPackage()) .addPackage(org.libreccm.auditing.CcmRevision.class.getPackage())
.addPackage(org.libreccm.categorization.Categorization.class .addPackage(
.getPackage()) org.libreccm.categorization.Categorization.class.getPackage()
.addPackage(org.libreccm.configuration.Configuration.class. )
getPackage()) .addPackage(
.addPackage(org.libreccm.core.CcmObject.class.getPackage()) org.libreccm.configuration.Configuration.class.getPackage()
.addPackage(org.libreccm.jpa.EntityManagerProducer.class )
.getPackage()) .addPackage(
.addPackage(org.libreccm.jpa.utils.MimeTypeConverter.class org.libreccm.core.CcmObject.class.getPackage()
.getPackage()) )
.addPackage(
org.libreccm.jpa.EntityManagerProducer.class.getPackage()
)
.addPackage(
org.libreccm.jpa.utils.MimeTypeConverter.class.getPackage()
)
.addPackage(org.libreccm.l10n.LocalizedString.class.getPackage()) .addPackage(org.libreccm.l10n.LocalizedString.class.getPackage())
.addClass(org.libreccm.modules.CcmModule.class) .addClass(org.libreccm.modules.CcmModule.class)
.addClass(org.libreccm.modules.ModuleEvent.class) .addClass(org.libreccm.modules.ModuleEvent.class)
@ -122,17 +128,30 @@ public class CcmObjectRepositoryTest {
.addClass(org.libreccm.modules.UnInstallEvent.class) .addClass(org.libreccm.modules.UnInstallEvent.class)
.addClass(org.libreccm.modules.ShutdownEvent.class) .addClass(org.libreccm.modules.ShutdownEvent.class)
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addPackage(org.libreccm.security.PermissionChecker.class .addPackage(
.getPackage()) org.libreccm.security.PermissionChecker.class.getPackage()
)
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage()) .addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
.addPackage(org.libreccm.testutils.EqualsVerifier.class. .addPackage(
getPackage()) org.libreccm.testutils.EqualsVerifier.class.getPackage()
.addPackage(org.libreccm.tests.categories.IntegrationTest.class )
.getPackage()) .addPackage(
org.libreccm.tests.categories.IntegrationTest.class.getPackage()
)
.addPackage(org.libreccm.web.CcmApplication.class.getPackage()) .addPackage(org.libreccm.web.CcmApplication.class.getPackage())
.addPackage(org.libreccm.workflow.Workflow.class.getPackage()) .addPackage(org.libreccm.workflow.Workflow.class.getPackage())
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class .addPackage(com.arsdigita.kernel.security.SecurityConfig.class
.getPackage()) .getPackage())
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
"META-INF/persistence.xml") "META-INF/persistence.xml")
@ -358,7 +377,8 @@ public class CcmObjectRepositoryTest {
@Test(expected = NullPointerException.class) @Test(expected = NullPointerException.class)
@ShouldThrowException(NullPointerException.class) @ShouldThrowException(NullPointerException.class)
@UsingDataSet("datasets/org/libreccm/core/CcmObjectRepositoryTest/data.yml") @UsingDataSet("datasets/org/libreccm/core/CcmObjectRepositoryTest/data.yml")
@ShouldMatchDataSet("datasets/org/libreccm/core/CcmObjectRepositoryTest/data.yml") @ShouldMatchDataSet(
"datasets/org/libreccm/core/CcmObjectRepositoryTest/data.yml")
@InSequence(700) @InSequence(700)
public void deleteNullValue() { public void deleteNullValue() {
ccmObjectRepository.delete(null); ccmObjectRepository.delete(null);

View File

@ -82,20 +82,26 @@ public class GroupImportTest {
private static final String IMPORT_MANIFEST_SOURCE = "/imports" private static final String IMPORT_MANIFEST_SOURCE = "/imports"
+ "/org.libreccm.imexport.GroupImportTest" + "/org.libreccm.imexport.GroupImportTest"
+ "/ccm-export.json"; + "/ccm-export.json";
private static final String IMPORT_GROUPS_TOC_SOURCE = "/imports" private static final String IMPORT_GROUPS_TOC_SOURCE = "/imports"
+ "/org.libreccm.imexport.GroupImportTest" + "/org.libreccm.imexport.GroupImportTest"
+ "/org.libreccm.security.Group" + "/org.libreccm.security.Group"
+ "/org.libreccm.security.Group.json"; + "/org.libreccm.security.Group.json";
private static final String IMPORT_DATA_SOURCE = "/imports" private static final String IMPORT_DATA_SOURCE = "/imports"
+ "/org.libreccm.imexport.GroupImportTest" + "/org.libreccm.imexport.GroupImportTest"
+ "/org.libreccm.security.Group" + "/org.libreccm.security.Group"
+ "/696592cd-db19-4aca-bb14-06490cfde243.json"; + "/696592cd-db19-4aca-bb14-06490cfde243.json";
private static final String TMP_DIR = System.getProperty("java.io.tmpdir"); private static final String TMP_DIR = System.getProperty("java.io.tmpdir");
private static final String CCM_TESTS_DIR = TMP_DIR + "/ccm-tests"; private static final String CCM_TESTS_DIR = TMP_DIR + "/ccm-tests";
private static final String IMPORTS_DIR = CCM_TESTS_DIR + "/imports"; private static final String IMPORTS_DIR = CCM_TESTS_DIR + "/imports";
private static final String GROUP_IMPORT_TEST_DIR = IMPORTS_DIR private static final String GROUP_IMPORT_TEST_DIR = IMPORTS_DIR
+ "/org.libreccm.imexport.GroupImportTest"; + "/org.libreccm.imexport.GroupImportTest";
private static final String IMPORT_DATA_DIR = GROUP_IMPORT_TEST_DIR private static final String IMPORT_DATA_DIR = GROUP_IMPORT_TEST_DIR
+ "/org.libreccm.security.Group"; + "/org.libreccm.security.Group";
@ -233,6 +239,16 @@ public class GroupImportTest {
.getPackage()) .getPackage())
.addClass(com.arsdigita.kernel.security.SecurityConfig.class) .addClass(com.arsdigita.kernel.security.SecurityConfig.class)
.addClass(com.arsdigita.kernel.KernelConfig.class) .addClass(com.arsdigita.kernel.KernelConfig.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("configs/shiro.ini", "shiro.ini") .addAsResource("configs/shiro.ini", "shiro.ini")
.addAsResource("imports", "imports") .addAsResource("imports", "imports")

View File

@ -82,20 +82,26 @@ public class GroupMembershipImportTest {
private static final String IMPORT_MANIFEST_SOURCE = "/imports" private static final String IMPORT_MANIFEST_SOURCE = "/imports"
+ "/org.libreccm.imexport.GroupMembershipImportTest" + "/org.libreccm.imexport.GroupMembershipImportTest"
+ "/ccm-export.json"; + "/ccm-export.json";
private static final String IMPORT_GROUPMEMBERSHIP_TOC_SOURCE = "/imports" private static final String IMPORT_GROUPMEMBERSHIP_TOC_SOURCE = "/imports"
+ "/org.libreccm.imexport.GroupMembershipImportTest" + "/org.libreccm.imexport.GroupMembershipImportTest"
+ "/org.libreccm.security.GroupMembership" + "/org.libreccm.security.GroupMembership"
+ "/org.libreccm.security.GroupMembership.json"; + "/org.libreccm.security.GroupMembership.json";
private static final String IMPORT_GROUPMEMBERSHIP_DATA_SOURCE = "/imports" private static final String IMPORT_GROUPMEMBERSHIP_DATA_SOURCE = "/imports"
+ "/org.libreccm.imexport.GroupMembershipImportTest" + "/org.libreccm.imexport.GroupMembershipImportTest"
+ "/org.libreccm.security.GroupMembership" + "/org.libreccm.security.GroupMembership"
+ "/f8ac4073-447e-4bd6-ac96-3bf92bdc8ce7.json"; + "/f8ac4073-447e-4bd6-ac96-3bf92bdc8ce7.json";
private static final String TMP_DIR = System.getProperty("java.io.tmpdir"); private static final String TMP_DIR = System.getProperty("java.io.tmpdir");
private static final String CCM_TESTS_DIR = TMP_DIR + "/ccm-tests"; private static final String CCM_TESTS_DIR = TMP_DIR + "/ccm-tests";
private static final String IMPORTS_DIR = CCM_TESTS_DIR + "/imports"; private static final String IMPORTS_DIR = CCM_TESTS_DIR + "/imports";
private static final String GROUPMEMBERSHIP_IMPORT_TEST_DIR = IMPORTS_DIR private static final String GROUPMEMBERSHIP_IMPORT_TEST_DIR = IMPORTS_DIR
+ "/org.libreccm.imexport.GroupMembershipImportTest"; + "/org.libreccm.imexport.GroupMembershipImportTest";
private static final String IMPORT_GROUPMEMBERSHIP_DATA_DIR private static final String IMPORT_GROUPMEMBERSHIP_DATA_DIR
= GROUPMEMBERSHIP_IMPORT_TEST_DIR = GROUPMEMBERSHIP_IMPORT_TEST_DIR
+ "/org.libreccm.security.GroupMembership"; + "/org.libreccm.security.GroupMembership";
@ -237,6 +243,16 @@ public class GroupMembershipImportTest {
.getPackage()) .getPackage())
.addClass(com.arsdigita.kernel.security.SecurityConfig.class) .addClass(com.arsdigita.kernel.security.SecurityConfig.class)
.addClass(com.arsdigita.kernel.KernelConfig.class) .addClass(com.arsdigita.kernel.KernelConfig.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("configs/shiro.ini", "shiro.ini") .addAsResource("configs/shiro.ini", "shiro.ini")
.addAsResource("imports", "imports") .addAsResource("imports", "imports")

View File

@ -82,20 +82,26 @@ public class UserImportTest {
private static final String IMPORT_MANIFEST_SOURCE = "/imports" private static final String IMPORT_MANIFEST_SOURCE = "/imports"
+ "/org.libreccm.imexport.UserImportTest" + "/org.libreccm.imexport.UserImportTest"
+ "/ccm-export.json"; + "/ccm-export.json";
private static final String IMPORT_USERS_TOC_SOURCE = "/imports" private static final String IMPORT_USERS_TOC_SOURCE = "/imports"
+ "/org.libreccm.imexport.UserImportTest" + "/org.libreccm.imexport.UserImportTest"
+ "/org.libreccm.security.User" + "/org.libreccm.security.User"
+ "/org.libreccm.security.User.json"; + "/org.libreccm.security.User.json";
private static final String IMPORT_DATA_SOURCE = "/imports" private static final String IMPORT_DATA_SOURCE = "/imports"
+ "/org.libreccm.imexport.UserImportTest" + "/org.libreccm.imexport.UserImportTest"
+ "/org.libreccm.security.User" + "/org.libreccm.security.User"
+ "/7cb9aba4-8071-4f27-af19-096e1473d050.json"; + "/7cb9aba4-8071-4f27-af19-096e1473d050.json";
private static final String TMP_DIR = System.getProperty("java.io.tmpdir"); private static final String TMP_DIR = System.getProperty("java.io.tmpdir");
private static final String CCM_TESTS_DIR = TMP_DIR + "/ccm-tests"; private static final String CCM_TESTS_DIR = TMP_DIR + "/ccm-tests";
private static final String IMPORTS_DIR = CCM_TESTS_DIR + "/imports"; private static final String IMPORTS_DIR = CCM_TESTS_DIR + "/imports";
private static final String USER_IMPORT_TEST_DIR = IMPORTS_DIR private static final String USER_IMPORT_TEST_DIR = IMPORTS_DIR
+ "/org.libreccm.imexport.UserImportTest"; + "/org.libreccm.imexport.UserImportTest";
private static final String IMPORT_DATA_DIR = USER_IMPORT_TEST_DIR private static final String IMPORT_DATA_DIR = USER_IMPORT_TEST_DIR
+ "/org.libreccm.security.User"; + "/org.libreccm.security.User";
@ -232,6 +238,16 @@ public class UserImportTest {
.getPackage()) .getPackage())
.addClass(com.arsdigita.kernel.security.SecurityConfig.class) .addClass(com.arsdigita.kernel.security.SecurityConfig.class)
.addClass(com.arsdigita.kernel.KernelConfig.class) .addClass(com.arsdigita.kernel.KernelConfig.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("configs/shiro.ini", "shiro.ini") .addAsResource("configs/shiro.ini", "shiro.ini")
.addAsResource("imports", "imports") .addAsResource("imports", "imports")

View File

@ -46,7 +46,6 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript; import org.jboss.arquillian.persistence.CleanupUsingScript;
import org.jboss.arquillian.persistence.TestExecutionPhase; import org.jboss.arquillian.persistence.TestExecutionPhase;
/** /**
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -102,6 +101,16 @@ public class ConfigurationLoaderTest {
.addPackage(org.libreccm.testutils.EqualsVerifier.class. .addPackage(org.libreccm.testutils.EqualsVerifier.class.
getPackage()) getPackage())
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage()) .addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
"META-INF/persistence.xml") "META-INF/persistence.xml")
@ -118,7 +127,7 @@ public class ConfigurationLoaderTest {
@Test @Test
@ShouldMatchDataSet( @ShouldMatchDataSet(
value = "datasets/org/libreccm/modules/ConfigurationLoaderTest/" value = "datasets/org/libreccm/modules/ConfigurationLoaderTest/"
+ "after-load.yml", + "after-load.xml",
excludeColumns = {"setting_id", "entry_id"}) excludeColumns = {"setting_id", "entry_id"})
public void loadConfiguration() { public void loadConfiguration() {
final ConfigurationLoader confLoader = new ConfigurationLoader( final ConfigurationLoader confLoader = new ConfigurationLoader(

View File

@ -46,7 +46,7 @@ public class DatasetsTest extends DatasetsVerifier {
@Parameterized.Parameters(name = "Dataset {0}") @Parameterized.Parameters(name = "Dataset {0}")
public static Collection<String> data() { public static Collection<String> data() {
return Arrays.asList(new String[]{ return Arrays.asList(new String[]{
"/datasets/org/libreccm/modules/ConfigurationLoaderTest/after-load.yml",}); "/datasets/org/libreccm/modules/ConfigurationLoaderTest/after-load.xml",});
} }
public DatasetsTest(final String datasetPath) { public DatasetsTest(final String datasetPath) {
@ -60,7 +60,7 @@ public class DatasetsTest extends DatasetsVerifier {
@Override @Override
public DatasetType getDatasetType() { public DatasetType getDatasetType() {
return YAML; return FLAT_XML;
} }
@BeforeClass @BeforeClass

View File

@ -113,6 +113,12 @@ public class DependencyTreeManagerCycleTest {
org.libreccm.modules.dependencytree.test.cycle.TestModuleC.class) org.libreccm.modules.dependencytree.test.cycle.TestModuleC.class)
.addPackage(org.libreccm.pagemodel.PageModel.class.getPackage()) .addPackage(org.libreccm.pagemodel.PageModel.class.getPackage())
.addClass(org.libreccm.web.ApplicationType.class) .addClass(org.libreccm.web.ApplicationType.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml") .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
.addAsResource( .addAsResource(

View File

@ -127,6 +127,12 @@ public class DependencyTreeManagerTest {
// .addClass(org.libreccm.portation.Portable.class) // .addClass(org.libreccm.portation.Portable.class)
.addPackage(org.libreccm.pagemodel.PageModel.class.getPackage()) .addPackage(org.libreccm.pagemodel.PageModel.class.getPackage())
.addClass(org.libreccm.web.ApplicationType.class) .addClass(org.libreccm.web.ApplicationType.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml") .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
.addAsResource( .addAsResource(

View File

@ -133,6 +133,16 @@ public class AuthorizationInterceptorTest {
.addClass(com.arsdigita.kernel.KernelConfig.class) .addClass(com.arsdigita.kernel.KernelConfig.class)
.addClass(com.arsdigita.util.UncheckedWrapperException.class) .addClass(com.arsdigita.util.UncheckedWrapperException.class)
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
"META-INF/persistence.xml") "META-INF/persistence.xml")

View File

@ -136,6 +136,16 @@ public class ChallengeManagerTest {
.addClass(com.arsdigita.kernel.KernelConfig.class) .addClass(com.arsdigita.kernel.KernelConfig.class)
.addClass(com.arsdigita.kernel.security.SecurityConfig.class) .addClass(com.arsdigita.kernel.security.SecurityConfig.class)
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("configs/shiro.ini", "shiro.ini") .addAsResource("configs/shiro.ini", "shiro.ini")
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",

View File

@ -126,6 +126,16 @@ public class GroupManagerTest {
.addClass(com.arsdigita.kernel.KernelConfig.class) .addClass(com.arsdigita.kernel.KernelConfig.class)
.addClass(com.arsdigita.kernel.security.SecurityConfig.class) .addClass(com.arsdigita.kernel.security.SecurityConfig.class)
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
"META-INF/persistence.xml") "META-INF/persistence.xml")

View File

@ -126,6 +126,16 @@ public class GroupRepositoryTest {
.addPackage(org.libreccm.tests.categories.IntegrationTest.class .addPackage(org.libreccm.tests.categories.IntegrationTest.class
.getPackage()) .getPackage())
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("configs/shiro.ini", "shiro.ini") .addAsResource("configs/shiro.ini", "shiro.ini")
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",

View File

@ -65,25 +65,19 @@ public class ListContainsTest {
user1.setName("user1"); user1.setName("user1");
user1.setGivenName("User"); user1.setGivenName("User");
user1.setFamilyName("One"); user1.setFamilyName("One");
final EmailAddress user1mail = new EmailAddress(); user1.setPrimaryEmailAddress("user.one@example.org");
user1mail.setAddress("user.one@example.org");
user1.setPrimaryEmailAddress(user1mail);
final User user2 = new User(); final User user2 = new User();
user2.setName("user2"); user2.setName("user2");
user2.setGivenName("User"); user2.setGivenName("User");
user2.setFamilyName("Two"); user2.setFamilyName("Two");
final EmailAddress user2mail = new EmailAddress(); user2.setPrimaryEmailAddress("user.two@example.org");
user2mail.setAddress("user.two@example.org");
user2.setPrimaryEmailAddress(user1mail);
final User user3 = new User(); final User user3 = new User();
user3.setName("user3"); user3.setName("user3");
user3.setGivenName("User"); user3.setGivenName("User");
user3.setFamilyName("Three"); user3.setFamilyName("Three");
final EmailAddress user3mail = new EmailAddress(); user3.setPrimaryEmailAddress("user.three@example.org");
user3mail.setAddress("user.three@example.org");
user3.setPrimaryEmailAddress(user1mail);
final List<User> users = new ArrayList<>(); final List<User> users = new ArrayList<>();
users.add(user1); users.add(user1);

View File

@ -130,6 +130,16 @@ public class OneTimeAuthManagerTest {
.addClass(com.arsdigita.kernel.KernelConfig.class) .addClass(com.arsdigita.kernel.KernelConfig.class)
.addClass(com.arsdigita.kernel.security.SecurityConfig.class) .addClass(com.arsdigita.kernel.security.SecurityConfig.class)
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("configs/shiro.ini", "shiro.ini") .addAsResource("configs/shiro.ini", "shiro.ini")
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",

View File

@ -131,6 +131,16 @@ public class PartyRepositoryTest {
.addClass(com.arsdigita.kernel.KernelConfig.class) .addClass(com.arsdigita.kernel.KernelConfig.class)
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage()) .addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("configs/shiro.ini", "shiro.ini") .addAsResource("configs/shiro.ini", "shiro.ini")
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
@ -211,15 +221,12 @@ public class PartyRepositoryTest {
public void saveNewParty() { public void saveNewParty() {
final User mmuster = new User(); final User mmuster = new User();
final EmailAddress emailAddress = new EmailAddress();
emailAddress.setAddress("max.mustermann@example.org");
emailAddress.setBouncing(false);
emailAddress.setVerified(true);
mmuster.setName("mmuster"); mmuster.setName("mmuster");
mmuster.setGivenName("Max"); mmuster.setGivenName("Max");
mmuster.setFamilyName("Mustermann"); mmuster.setFamilyName("Mustermann");
mmuster.setPrimaryEmailAddress(emailAddress); mmuster.setPrimaryEmailAddress("max.mustermann@example.org");
mmuster.setPrimaryEmailAddressBouncing(false);
mmuster.setPrimaryEmailAddressVerified(true);
mmuster.setPassword( mmuster.setPassword(
"$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="); "$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==");
mmuster.setPasswordResetRequired(false); mmuster.setPasswordResetRequired(false);

View File

@ -134,6 +134,16 @@ public class PermissionCheckerTest {
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class .addPackage(com.arsdigita.kernel.security.SecurityConfig.class
.getPackage()) .getPackage())
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
"META-INF/persistence.xml") "META-INF/persistence.xml")

View File

@ -135,6 +135,16 @@ public class PermissionManagerTest {
.getPackage()) .getPackage())
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage()) .addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
"META-INF/persistence.xml") "META-INF/persistence.xml")

View File

@ -123,6 +123,16 @@ public class RoleManagerTest {
.getPackage()) .getPackage())
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage()) .addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
"META-INF/persistence.xml") "META-INF/persistence.xml")

View File

@ -77,7 +77,9 @@ import org.jboss.arquillian.persistence.TestExecutionPhase;
public class RoleRepositoryTest { public class RoleRepositoryTest {
private static final String ADMINISTRATOR = "administrator"; private static final String ADMINISTRATOR = "administrator";
private static final String USER = "user"; private static final String USER = "user";
private static final String READER = "reader"; private static final String READER = "reader";
@Inject @Inject
@ -132,6 +134,16 @@ public class RoleRepositoryTest {
.addPackage(org.libreccm.tests.categories.IntegrationTest.class .addPackage(org.libreccm.tests.categories.IntegrationTest.class
.getPackage()) .getPackage())
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("configs/shiro.ini", "shiro.ini") .addAsResource("configs/shiro.ini", "shiro.ini")
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
@ -204,7 +216,8 @@ public class RoleRepositoryTest {
@UsingDataSet("datasets/org/libreccm/security/RoleRepositoryTest/data.yml") @UsingDataSet("datasets/org/libreccm/security/RoleRepositoryTest/data.yml")
@InSequence(200) @InSequence(200)
public void findRoleByName() { public void findRoleByName() {
final Optional<Role> administrator = roleRepository.findByName(ADMINISTRATOR); final Optional<Role> administrator = roleRepository.findByName(
ADMINISTRATOR);
final Optional<Role> user = roleRepository.findByName(USER); final Optional<Role> user = roleRepository.findByName(USER);
final Optional<Role> reader = roleRepository.findByName(READER); final Optional<Role> reader = roleRepository.findByName(READER);

View File

@ -149,7 +149,17 @@ public class SecuredCollectionTest {
.addPackage(com.arsdigita.kernel.KernelConfig.class.getPackage()) .addPackage(com.arsdigita.kernel.KernelConfig.class.getPackage())
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class .addPackage(com.arsdigita.kernel.security.SecurityConfig.class
.getPackage()) .getPackage())
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
"META-INF/persistence.xml") "META-INF/persistence.xml")

View File

@ -152,6 +152,16 @@ public class SecuredIteratorTest {
.getPackage()) .getPackage())
.addPackage(com.arsdigita.kernel.KernelConfig.class.getPackage()) .addPackage(com.arsdigita.kernel.KernelConfig.class.getPackage())
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
"META-INF/persistence.xml") "META-INF/persistence.xml")

View File

@ -125,6 +125,16 @@ public class ShiroTest {
.getPackage()) .getPackage())
.addClass(org.libreccm.security.authorization.LabBean.class) .addClass(org.libreccm.security.authorization.LabBean.class)
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
"META-INF/persistence.xml") "META-INF/persistence.xml")

View File

@ -126,6 +126,16 @@ public class UserManagerTest {
.getPackage()) .getPackage())
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage()) .addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
"META-INF/persistence.xml") "META-INF/persistence.xml")

View File

@ -131,6 +131,16 @@ public class UserRepositoryTest {
.addClass(com.arsdigita.kernel.KernelConfig.class) .addClass(com.arsdigita.kernel.KernelConfig.class)
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage()) .addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
.addClass(org.libreccm.imexport.Exportable.class) .addClass(org.libreccm.imexport.Exportable.class)
.addClass(
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
)
.addClass(
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
)
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
.addClass(
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("configs/shiro.ini", "shiro.ini") .addAsResource("configs/shiro.ini", "shiro.ini")
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
@ -253,15 +263,12 @@ public class UserRepositoryTest {
public void saveNewUser() { public void saveNewUser() {
final User user = new User(); final User user = new User();
final EmailAddress emailAddress = new EmailAddress();
emailAddress.setAddress("jane.doe@example.org");
emailAddress.setBouncing(false);
emailAddress.setVerified(false);
user.setName("jane"); user.setName("jane");
user.setGivenName("Jane"); user.setGivenName("Jane");
user.setFamilyName("Doe"); user.setFamilyName("Doe");
user.setPrimaryEmailAddress(emailAddress); user.setPrimaryEmailAddress("jane.doe@example.org");
user.setPrimaryEmailAddressBouncing(false);
user.setPrimaryEmailAddressVerified(false);
user.setPassword( user.setPassword(
"$shiro1$SHA-512$500000$24lA090z7GKYr4VFlZ6t4A==$/heoTHPA5huT1UfJ8Q+waXEG6AjUKhFYLFrj7KW/l0/z9O+QkiZTtfPfbcPblgjcEvrROMEIoQY4Z65S7rFLQg=="); "$shiro1$SHA-512$500000$24lA090z7GKYr4VFlZ6t4A==$/heoTHPA5huT1UfJ8Q+waXEG6AjUKhFYLFrj7KW/l0/z9O+QkiZTtfPfbcPblgjcEvrROMEIoQY4Z65S7rFLQg==");
user.setPasswordResetRequired(false); user.setPasswordResetRequired(false);
@ -282,11 +289,9 @@ public class UserRepositoryTest {
user.setPassword( user.setPassword(
"$shiro1$SHA-512$500000$AH1llRaMHE8W31Q7VG6jsA==$XXgKeyDCsrN23NvszQ5wt+uViQUlVqTAM+05LrE7Bd9sc0eaJT8HlAGvSdY+rqTLbiGm9YS4pohzoUt1x3kmKg=="); "$shiro1$SHA-512$500000$AH1llRaMHE8W31Q7VG6jsA==$XXgKeyDCsrN23NvszQ5wt+uViQUlVqTAM+05LrE7Bd9sc0eaJT8HlAGvSdY+rqTLbiGm9YS4pohzoUt1x3kmKg==");
final EmailAddress emailAddress = new EmailAddress(); user.setPrimaryEmailAddress("jd@example.com");
emailAddress.setAddress("jd@example.com"); user.setPrimaryEmailAddressBouncing(false);
emailAddress.setBouncing(false); user.setPrimaryEmailAddressVerified(true);
emailAddress.setVerified(true);
user.setPrimaryEmailAddress(emailAddress);
shiro.getSystemUser().execute(() -> userRepository.save(user)); shiro.getSystemUser().execute(() -> userRepository.save(user));
} }

View File

@ -27,7 +27,7 @@
<extension qualifier="persistence-dbunit"> <extension qualifier="persistence-dbunit">
<property name="defaultDataSetFormat">json</property> <property name="defaultDataSetFormat">json</property>
<property name="datatypeFactory">org.dbunit.ext.h2.H2DataTypeFactory</property> <property name="datatypeFactory">org.libreccm.testutils.dbunit.CcmH2DataTypeFactory</property>
<property name="excludePoi">true</property> <property name="excludePoi">true</property>
<property name="qualifiedTableNames">true</property> <property name="qualifiedTableNames">true</property>
</extension> </extension>

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,
QUERY_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),
LISTENER_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_BOOLEAN boolean,
SETTING_VALUE_LONG bigint, SETTING_VALUE_LONG bigint,
SETTING_VALUE_STRING varchar(1024), SETTING_VALUE_LOCALIZED_STRING json,
SETTING_VALUE_DOUBLE double, SETTING_VALUE_DOUBLE double,
SETTING_VALUE_STRING varchar(1024),
SETTING_VALUE_BIG_DECIMAL decimal(19,2), SETTING_VALUE_BIG_DECIMAL decimal(19,2),
SETTING_VALUE_BOOLEAN boolean,
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

@ -26,7 +26,7 @@
<extension qualifier="persistence-dbunit"> <extension qualifier="persistence-dbunit">
<property name="defaultDataSetFormat">json</property> <property name="defaultDataSetFormat">json</property>
<property name="datatypeFactory">org.dbunit.ext.postgresql.PostgresqlDataTypeFactory</property> <property name="datatypeFactory">org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory</property>
<property name="excludePoi">true</property> <property name="excludePoi">true</property>
<property name="qualifiedTableNames">true</property> <property name="qualifiedTableNames">true</property>
</extension> </extension>

View File

@ -1,3 +1,4 @@
create table CCM_CORE.APPLICATIONS ( create table CCM_CORE.APPLICATIONS (
APPLICATION_TYPE varchar(1024) not null, APPLICATION_TYPE varchar(1024) not null,
PRIMARY_URL varchar(1024) not null, PRIMARY_URL varchar(1024) not null,
@ -18,8 +19,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 +42,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 +54,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 +79,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 +97,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 +108,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 +142,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 +179,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 +351,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 +412,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 +426,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,10 +447,11 @@
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_BOOLEAN boolean,
SETTING_VALUE_LONG int8,
SETTING_VALUE_STRING varchar(1024), SETTING_VALUE_STRING varchar(1024),
SETTING_VALUE_LONG int8,
SETTING_VALUE_BOOLEAN boolean,
SETTING_VALUE_DOUBLE float8, SETTING_VALUE_DOUBLE float8,
SETTING_VALUE_LOCALIZED_STRING jsonb,
SETTING_VALUE_BIG_DECIMAL numeric(19, 2), SETTING_VALUE_BIG_DECIMAL numeric(19, 2),
primary key (SETTING_ID) primary key (SETTING_ID)
); );
@ -555,13 +461,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)
@ -660,22 +559,16 @@
primary key (OBJECT_ID) primary key (OBJECT_ID)
); );
create table CCM_CORE.USER_EMAIL_ADDRESSES (
USER_ID int8 not null,
EMAIL_ADDRESS varchar(512) not null,
BOUNCING boolean,
VERIFIED boolean
);
create table CCM_CORE.USERS ( create table CCM_CORE.USERS (
BANNED boolean, BANNED boolean,
EMAIL_ADDRESSES jsonb,
FAMILY_NAME varchar(512), FAMILY_NAME varchar(512),
GIVEN_NAME varchar(512), GIVEN_NAME varchar(512),
PASSWORD varchar(2048), PASSWORD varchar(2048),
PASSWORD_RESET_REQUIRED boolean, PASSWORD_RESET_REQUIRED boolean,
EMAIL_ADDRESS varchar(512) not null, PRIMARY_EMAIL_ADDRESS varchar(255),
BOUNCING boolean, PRIMARY_EMAIL_ADDRESS_BOUNCING boolean,
VERIFIED boolean, PRIMARY_EMAIL_ADDRESS_VERIFIED boolean,
PARTY_ID int8 not null, PARTY_ID int8 not null,
primary key (PARTY_ID) primary key (PARTY_ID)
); );
@ -691,20 +584,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 +609,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 +624,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 +693,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 +725,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 +735,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 +755,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 +765,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 +795,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 +820,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 +950,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 +1000,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 +1015,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 +1030,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)
@ -1321,11 +1105,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.USER_EMAIL_ADDRESSES
add constraint FKr900l79erul95seyyccf04ufc
foreign key (USER_ID)
references CCM_CORE.USERS;
alter table CCM_CORE.USERS alter table CCM_CORE.USERS
add constraint FKosh928q71aonu6l1kurb417r add constraint FKosh928q71aonu6l1kurb417r
foreign key (PARTY_ID) foreign key (PARTY_ID)
@ -1346,16 +1125,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 +1155,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)

View File

@ -1,7 +1,5 @@
DELETE FROM ccm_core.settings_string_list; DELETE FROM ccm_core.settings_string_list;
DELETE FROM ccm_core.settings_l10n_str_values;
DELETE FROM ccm_core.settings_enum_values; DELETE FROM ccm_core.settings_enum_values;
DELETE FROM ccm_core.settings_enum_values; DELETE FROM ccm_core.settings_enum_values;
@ -28,8 +26,6 @@ DELETE FROM ccm_core.one_time_auth_tokens;
DELETE FROM ccm_core.users; DELETE FROM ccm_core.users;
DELETE FROM ccm_core.user_email_addresses;
DELETE FROM ccm_core.parties; DELETE FROM ccm_core.parties;
DELETE FROM ccm_core.ccm_roles; DELETE FROM ccm_core.ccm_roles;

View File

@ -26,6 +26,11 @@
<property name="hibernate.show_sql" value="true"/> <property name="hibernate.show_sql" value="true"/>
<property name="hibernate.id.new_generator_mappings" value="true"/> <property name="hibernate.id.new_generator_mappings" value="true"/>
<property name="hibernate.connection.autocommit" value="false" /> <property name="hibernate.connection.autocommit" value="false" />
<property
name="hibernate.dialect"
value="org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect"
/>
<!-- <!--
Properties for Hibernate Envers Properties for Hibernate Envers

View File

@ -84,30 +84,30 @@ ccm_core.users:
- party_id: 3000 - party_id: 3000
given_name: public given_name: public
family_name: user family_name: user
email_address: public-user@localhost primary_email_address: public-user@localhost
primary_email_address_bouncing: false
primary_email_address_verified: true
banned: false banned: false
bouncing: false
verified: true
password_reset_required: false password_reset_required: false
- party_id: 3100 - party_id: 3100
given_name: Jane given_name: Jane
family_name: Doe family_name: Doe
email_address: jane.doe@example.org primary_email_address: jane.doe@example.org
primary_email_address_bouncing: false
primary_email_address_verified: true
# foo123 # foo123
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q== password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
banned: false banned: false
bouncing: false
verified: true
password_reset_required: false password_reset_required: false
- party_id: 3200 - party_id: 3200
given_name: Maria given_name: Maria
family_name: Muster family_name: Muster
email_address: mmuster@example.com primary_email_address: mmuster@example.com
primary_email_address_bouncing: false
primary_email_address_verified: true
# foo123 # foo123
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q== password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
banned: false banned: false
bouncing: false
verified: true
password_reset_required: false password_reset_required: false
ccm_core.ccm_roles: ccm_core.ccm_roles:

View File

@ -69,28 +69,28 @@ ccm_core.users:
- party_id: 100 - party_id: 100
given_name: public given_name: public
family_name: user family_name: user
email_address: public-user@localhost primary_email_address: public-user@localhost
primary_email_address_bouncing: false
primary_email_address_verified: true
banned: false banned: false
bouncing: false
verified: true
password_reset_required: false password_reset_required: false
- party_id: 200 - party_id: 200
given_name: John given_name: John
family_name: Doe family_name: Doe
email_address: john.doe@example.org primary_email_address: john.doe@example.org
primary_email_address_bouncing: false
primary_email_address_verified: true
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q== password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
banned: false banned: false
bouncing: false
verified: true
password_reset_required: false password_reset_required: false
- party_id: 300 - party_id: 300
given_name: Max given_name: Max
family_name: Mustermann family_name: Mustermann
email_address: max.mustermann@example.org primary_email_address: mmuster@example.org
primary_email_address_bouncing: false
primary_email_address_verified: true
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q== password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
banned: false banned: false
bouncing: false
verified: true
password_reset_required: false password_reset_required: false
ccm_core.ccm_roles: ccm_core.ccm_roles:

View File

@ -59,28 +59,28 @@ ccm_core.users:
- party_id: 100 - party_id: 100
given_name: public given_name: public
family_name: user family_name: user
email_address: public-user@localhost primary_email_address: public-user@localhost
primary_email_address_bouncing: false
primary_email_address_verified: true
banned: false banned: false
bouncing: false
verified: true
password_reset_required: false password_reset_required: false
- party_id: 200 - party_id: 200
given_name: John given_name: John
family_name: Doe family_name: Doe
email_address: john.doe@example.org primary_email_address: john.doe@example.org
primary_email_address_bouncing: false
primary_email_address_verified: true
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q== password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
banned: false banned: false
bouncing: false
verified: true
password_reset_required: false password_reset_required: false
- party_id: 300 - party_id: 300
given_name: Max given_name: Max
family_name: Mustermann family_name: Mustermann
email_address: max.mustermann@example.org primary_email_address: mmuster@example.org
primary_email_address_bouncing: false
primary_email_address_verified: true
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q== password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
banned: false banned: false
bouncing: false
verified: true
password_reset_required: false password_reset_required: false
ccm_core.ccm_roles: ccm_core.ccm_roles:

View File

@ -22,36 +22,36 @@ ccm_core.parties:
ccm_core.users: ccm_core.users:
# John Doe # John Doe
- banned: false - banned: false
bouncing: false primary_email_address_bouncing: false
email_address: john.doe@example.com primary_email_address: john.doe@example.com
family_name: Doe family_name: Doe
given_name: John given_name: John
party_id: 10 party_id: 10
# foo123 # foo123
password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA== password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==
password_reset_required: false password_reset_required: false
verified: true primary_email_address_verified: true
# Max Mustermann # Max Mustermann
- banned: false - banned: false
bouncing: false primary_email_address_bouncing: false
email_address: max.mustermann@example.org primary_email_address: max.mustermann@example.org
family_name: Mustermann family_name: Mustermann
given_name: Max given_name: Max
party_id: 20 party_id: 20
# foo123 # foo123
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q== password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
password_reset_required: false password_reset_required: false
verified: true primary_email_address_verified: true
# Joe Public # Joe Public
- banned: false - banned: false
bouncing: false primary_email_address_bouncing: false
email_address: joe.public@example.com primary_email_address: joe.public@example.com
family_name: Public family_name: Public
given_name: Joe given_name: Joe
party_id: 30 party_id: 30
password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw== password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw==
password_reset_required: false password_reset_required: false
verified: true primary_email_address_verified: true
ccm_core.groups: ccm_core.groups:
# Group 1 # Group 1
- party_id: 100 - party_id: 100

View File

@ -22,36 +22,36 @@ ccm_core.parties:
ccm_core.users: ccm_core.users:
# John Doe # John Doe
- banned: false - banned: false
bouncing: false primary_email_address_bouncing: false
email_address: john.doe@example.com primary_email_address: john.doe@example.com
family_name: Doe family_name: Doe
given_name: John given_name: John
party_id: 10 party_id: 10
# foo123 # foo123
password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA== password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==
password_reset_required: false password_reset_required: false
verified: true primary_email_address_verified: true
# Max Mustermann # Max Mustermann
- banned: false - banned: false
bouncing: false primary_email_address_bouncing: false
email_address: max.mustermann@example.org primary_email_address: max.mustermann@example.org
family_name: Mustermann family_name: Mustermann
given_name: Max given_name: Max
party_id: 20 party_id: 20
# foo123 # foo123
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q== password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
password_reset_required: false password_reset_required: false
verified: true primary_email_address_verified: true
# Joe Public # Joe Public
- banned: false - banned: false
bouncing: false primary_email_address_bouncing: false
email_address: joe.public@example.com primary_email_address: joe.public@example.com
family_name: Public family_name: Public
given_name: Joe given_name: Joe
party_id: 30 party_id: 30
password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw== password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw==
password_reset_required: false password_reset_required: false
verified: true primary_email_address_verified: true
ccm_core.groups: ccm_core.groups:
# Group 1 # Group 1
- party_id: 100 - party_id: 100

View File

@ -18,43 +18,43 @@ ccm_core.parties:
ccm_core.users: ccm_core.users:
# John Doe # John Doe
- banned: false - banned: false
bouncing: false primary_email_address_bouncing: false
email_address: john.doe@example.com primary_email_address: john.doe@example.com
family_name: Doe family_name: Doe
given_name: John given_name: John
party_id: 10 party_id: 10
# foo123 # foo123
password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA== password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==
password_reset_required: false password_reset_required: false
verified: true primary_email_address_verified: true
# Max Mustermann # Max Mustermann
- banned: false - banned: false
bouncing: false primary_email_address_bouncing: false
email_address: max.mustermann@example.org primary_email_address: max.mustermann@example.org
family_name: Mustermann family_name: Mustermann
given_name: Max given_name: Max
party_id: 20 party_id: 20
# foo123 # foo123
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q== password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
password_reset_required: false password_reset_required: false
verified: true primary_email_address_verified: true
# Joe Public # Joe Public
- banned: false - banned: false
bouncing: false primary_email_address_bouncing: false
email_address: joe.public@example.com primary_email_address: joe.public@example.com
family_name: Public family_name: Public
given_name: Joe given_name: Joe
party_id: 30 party_id: 30
password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw== password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw==
password_reset_required: false password_reset_required: false
verified: true primary_email_address_verified: true
# Jane Doe # Jane Doe
- banned: false - banned: false
bouncing: false primary_email_address_bouncing: false
email_address: jane.doe@libreccm.example primary_email_address: jane.doe@libreccm.example
family_name: Doe family_name: Doe
given_name: Jane given_name: Jane
party_id: 40 party_id: 40
password: ofafodafa password: ofafodafa
password_reset_required: false password_reset_required: false
verified: true primary_email_address_verified: true

View File

@ -14,33 +14,33 @@ ccm_core.parties:
ccm_core.users: ccm_core.users:
# John Doe # John Doe
- banned: false - banned: false
bouncing: false primary_email_address_bouncing: false
email_address: john.doe@example.com primary_email_address: john.doe@example.com
family_name: Doe family_name: Doe
given_name: John given_name: John
party_id: 10 party_id: 10
# foo123 # foo123
password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA== password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==
password_reset_required: false password_reset_required: false
verified: true primary_email_address_verified: true
# Max Mustermann # Max Mustermann
- banned: false - banned: false
bouncing: false primary_email_address_bouncing: false
email_address: max.mustermann@example.org primary_email_address: max.mustermann@example.org
family_name: Mustermann family_name: Mustermann
given_name: Max given_name: Max
party_id: 20 party_id: 20
# foo123 # foo123
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q== password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
password_reset_required: false password_reset_required: false
verified: true primary_email_address_verified: true
# Joe Public # Joe Public
- banned: false - banned: false
bouncing: false primary_email_address_bouncing: false
email_address: joe.public@example.com primary_email_address: joe.public@example.com
family_name: Public family_name: Public
given_name: Joe given_name: Joe
party_id: 30 party_id: 30
password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw== password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw==
password_reset_required: false password_reset_required: false
verified: true primary_email_address_verified: true

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<dataset>
<ccm_core.settings
dtype="LocalizedStringSetting"
setting_id="120"
configuration_class="org.libreccm.configuration.ExampleConfiguration"
name="title"
setting_value_localized_string='{"de": "Versuch", "en": "Test"}'
/>
<ccm_core.settings
dtype="BooleanSetting"
setting_id="100"
configuration_class="org.libreccm.configuration.ExampleConfiguration"
name="enabled"
setting_value_boolean="true"
/>
<ccm_core.settings
dtype="LongSetting"
setting_id="110"
configuration_class="org.libreccm.configuration.ExampleConfiguration"
name="itemsPerPage"
setting_value_long="100"
/>
</dataset>

View File

@ -1,23 +0,0 @@
ccm_core.settings:
- setting_id: 100
configuration_class: org.libreccm.configuration.ExampleConfiguration
name: enabled
setting_value_boolean: true
dtype: BooleanSetting
- setting_id: 110
configuration_class: org.libreccm.configuration.ExampleConfiguration
name: itemsPerPage
setting_value_long: 100
dtype: LongSetting
- setting_id: 120
configuration_class: org.libreccm.configuration.ExampleConfiguration
name: title
dtype: LocalizedStringSetting
ccm_core.settings_l10n_str_values:
- entry_id: 120
locale: de
localized_value: Versuch
- entry_id: 120
locale: en
localized_value: Test

View File

@ -31,21 +31,21 @@
<ccm_core.users party_id="-10" <ccm_core.users party_id="-10"
family_name="Doe" family_name="Doe"
given_name="John" given_name="John"
email_address="john.doe@example.com" primary_email_address="john.doe@example.com"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==" password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="true"/>
<ccm_core.users party_id="-20" <ccm_core.users party_id="-20"
family_name="Mustermann" family_name="Mustermann"
given_name="Max" given_name="Max"
email_address="max.muster@example.org" primary_email_address="max.muster@example.org"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==" password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="true"/>
<ccm_core.one_time_auth_tokens <ccm_core.one_time_auth_tokens
token_id="-100" token_id="-100"

View File

@ -31,21 +31,21 @@
<ccm_core.users party_id="-10" <ccm_core.users party_id="-10"
family_name="Doe" family_name="Doe"
given_name="John" given_name="John"
email_address="john.doe@example.com" primary_email_address="john.doe@example.com"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==" password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="true"/>
<ccm_core.users party_id="-20" <ccm_core.users party_id="-20"
family_name="Mustermann" family_name="Mustermann"
given_name="Max" given_name="Max"
email_address="max.muster@example.org" primary_email_address="max.muster@example.org"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==" password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="true"/>
<ccm_core.one_time_auth_tokens <ccm_core.one_time_auth_tokens
token_id="-100" token_id="-100"

View File

@ -31,21 +31,21 @@
<ccm_core.users party_id="-10" <ccm_core.users party_id="-10"
family_name="Doe" family_name="Doe"
given_name="John" given_name="John"
email_address="john.doe@example.com" primary_email_address="john.doe@example.com"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==" password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="true"/>
<ccm_core.users party_id="-20" <ccm_core.users party_id="-20"
family_name="Mustermann" family_name="Mustermann"
given_name="Max" given_name="Max"
email_address="max.muster@example.org" primary_email_address="max.muster@example.org"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==" password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="true"/>
<ccm_core.one_time_auth_tokens <ccm_core.one_time_auth_tokens
token_id="-100" token_id="-100"

View File

@ -31,21 +31,21 @@
<ccm_core.users party_id="-10" <ccm_core.users party_id="-10"
family_name="Doe" family_name="Doe"
given_name="John" given_name="John"
email_address="john.doe@example.com" primary_email_address="john.doe@example.com"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==" password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="false"/>
<ccm_core.users party_id="-20" <ccm_core.users party_id="-20"
family_name="Mustermann" family_name="Mustermann"
given_name="Max" given_name="Max"
email_address="max.muster@example.org" primary_email_address="max.muster@example.org"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==" password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="false"/>
</dataset> </dataset>

View File

@ -31,21 +31,21 @@
<ccm_core.users party_id="-10" <ccm_core.users party_id="-10"
family_name="Doe" family_name="Doe"
given_name="John" given_name="John"
email_address="john.doe@example.com" primary_email_address="john.doe@example.com"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==" password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="false"/>
<ccm_core.users party_id="-20" <ccm_core.users party_id="-20"
family_name="Mustermann" family_name="Mustermann"
given_name="Max" given_name="Max"
email_address="max.muster@example.org" primary_email_address="max.muster@example.org"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==" password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="true"/>
</dataset> </dataset>

View File

@ -31,21 +31,21 @@
<ccm_core.users party_id="-10" <ccm_core.users party_id="-10"
family_name="Doe" family_name="Doe"
given_name="John" given_name="John"
email_address="john.doe@example.com" primary_email_address="john.doe@example.com"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==" password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="false"/>
<ccm_core.users party_id="-20" <ccm_core.users party_id="-20"
family_name="Mustermann" family_name="Mustermann"
given_name="Max" given_name="Max"
email_address="max.muster@example.org" primary_email_address="max.muster@example.org"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==" password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
bouncing="false" banned="false"
banned="true" password_reset_required="false" />
password_reset_required="false"
verified="false"/>
</dataset> </dataset>

View File

@ -31,20 +31,20 @@
<ccm_core.users party_id="-10" <ccm_core.users party_id="-10"
family_name="Doe" family_name="Doe"
given_name="John" given_name="John"
email_address="john.doe@example.com" primary_email_address="john.doe@example.com"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==" password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="true"/>
<ccm_core.users party_id="-20" <ccm_core.users party_id="-20"
family_name="Mustermann" family_name="Mustermann"
given_name="Max" given_name="Max"
email_address="max.muster@example.org" primary_email_address="max.muster@example.org"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==" password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="true"/>
</dataset> </dataset>

View File

@ -31,21 +31,21 @@
<ccm_core.users party_id="-10" <ccm_core.users party_id="-10"
family_name="Doe" family_name="Doe"
given_name="John" given_name="John"
email_address="john.doe@example.com" primary_email_address="john.doe@example.com"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==" password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="false"/>
<ccm_core.users party_id="-20" <ccm_core.users party_id="-20"
family_name="Mustermann" family_name="Mustermann"
given_name="Max" given_name="Max"
email_address="max.muster@example.org" primary_email_address="max.muster@example.org"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==" password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
bouncing="false" banned="false"
banned="true" password_reset_required="false" />
password_reset_required="false"
verified="false"/>
<ccm_core.one_time_auth_tokens <ccm_core.one_time_auth_tokens
token_id="-100" token_id="-100"

View File

@ -31,21 +31,21 @@
<ccm_core.users party_id="-10" <ccm_core.users party_id="-10"
family_name="Doe" family_name="Doe"
given_name="John" given_name="John"
email_address="john.doe@example.com" primary_email_address="john.doe@example.com"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==" password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="false"/>
<ccm_core.users party_id="-20" <ccm_core.users party_id="-20"
family_name="Mustermann" family_name="Mustermann"
given_name="Max" given_name="Max"
email_address="max.muster@example.org" primary_email_address="max.muster@example.org"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==" password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="false"/>
<ccm_core.one_time_auth_tokens <ccm_core.one_time_auth_tokens
token_id="-100" token_id="-100"

View File

@ -31,21 +31,21 @@
<ccm_core.users party_id="-10" <ccm_core.users party_id="-10"
family_name="Doe" family_name="Doe"
given_name="John" given_name="John"
email_address="john.doe@example.com" primary_email_address="john.doe@example.com"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==" password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false" />
verified="false"/>
<ccm_core.users party_id="-20" <ccm_core.users party_id="-20"
family_name="Mustermann" family_name="Mustermann"
given_name="Max" given_name="Max"
email_address="max.muster@example.org" primary_email_address="max.muster@example.org"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==" password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
bouncing="false" banned="false"
banned="true" password_reset_required="false" />
password_reset_required="false"
verified="false"/>
<ccm_core.one_time_auth_tokens <ccm_core.one_time_auth_tokens
token_id="-100" token_id="-100"

View File

@ -26,36 +26,36 @@ ccm_core.parties:
ccm_core.users: ccm_core.users:
# John Doe # John Doe
- banned: false - banned: false
bouncing: false primary_email_address: john.doe@example.com
email_address: john.doe@example.com primary_email_address_bouncing: false
primary_email_address_verified: true
family_name: Doe family_name: Doe
given_name: John given_name: John
party_id: 10 party_id: 10
# foo123 # foo123
password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA== password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==
password_reset_required: false password_reset_required: false
verified: true
# Max Mustermann # Max Mustermann
- banned: false - banned: false
bouncing: false primary_email_address: max.mustermann@example.org
email_address: max.mustermann@example.org primary_email_address_bouncing: false
primary_email_address_verified: true
family_name: Mustermann family_name: Mustermann
given_name: Max given_name: Max
party_id: 20 party_id: 20
# foo123 # foo123
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q== password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
password_reset_required: false password_reset_required: false
verified: true
# Joe Public # Joe Public
- banned: false - banned: false
bouncing: false primary_email_address: joe.public@example.com
email_address: joe.public@example.com primary_email_address_bouncing: false
primary_email_address_verified: true
family_name: Public family_name: Public
given_name: Joe given_name: Joe
party_id: 30 party_id: 30
password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw== password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw==
password_reset_required: false password_reset_required: false
verified: true
ccm_core.groups: ccm_core.groups:
# admins # admins
- party_id: 40 - party_id: 40

View File

@ -26,36 +26,37 @@ ccm_core.parties:
ccm_core.users: ccm_core.users:
# John Doe # John Doe
- banned: false - banned: false
bouncing: false primary_email_address: john.doe@example.com
email_address: john.doe@example.com primary_email_address_bouncing: false
primary_email_address_verified: true
family_name: Doe family_name: Doe
given_name: John given_name: John
party_id: 10 party_id: 10
# foo123 # foo123
password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA== password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==
password_reset_required: false password_reset_required: false
verified: true
# Max Mustermann # Max Mustermann
- banned: false - banned: false
bouncing: false primary_email_address: max.mustermann@example.org
email_address: max.mustermann@example.org primary_email_address_bouncing: false
primary_email_address_verified: true
family_name: Mustermann family_name: Mustermann
given_name: Max given_name: Max
party_id: 20 party_id: 20
# foo123 # foo123
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q== password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
password_reset_required: false password_reset_required: false
verified: true
# Joe Public # Joe Public
- banned: false - banned: false
bouncing: false primary_email_address: joe.public@example.com
email_address: joe.public@example.com primary_email_address_bouncing: false
primary_email_address_verified: true
family_name: Public family_name: Public
given_name: Joe given_name: Joe
party_id: 30 party_id: 30
password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw== password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw==
password_reset_required: false password_reset_required: false
verified: true
ccm_core.groups: ccm_core.groups:
# admins # admins
- party_id: 40 - party_id: 40

View File

@ -26,36 +26,36 @@ ccm_core.parties:
ccm_core.users: ccm_core.users:
# John Doe # John Doe
- banned: false - banned: false
bouncing: false primary_email_address: john.doe@example.com
email_address: john.doe@example.com primary_email_address_bouncing: false
primary_email_address_verified: true
family_name: Doe family_name: Doe
given_name: John given_name: John
party_id: 10 party_id: 10
# foo123 # foo123
password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA== password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==
password_reset_required: false password_reset_required: false
verified: true
# Max Mustermann # Max Mustermann
- banned: false - banned: false
bouncing: false primary_email_address: max.mustermann@example.org
email_address: max.mustermann@example.org primary_email_address_bouncing: false
primary_email_address_verified: true
family_name: Mustermann family_name: Mustermann
given_name: Max given_name: Max
party_id: 20 party_id: 20
# foo123 # foo123
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q== password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
password_reset_required: false password_reset_required: false
verified: true
# Joe Public # Joe Public
- banned: false - banned: false
bouncing: false primary_email_address: joe.public@example.com
email_address: joe.public@example.com primary_email_address_bouncing: false
primary_email_address_verified: true
family_name: Public family_name: Public
given_name: Joe given_name: Joe
party_id: 30 party_id: 30
password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw== password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw==
password_reset_required: false password_reset_required: false
verified: true
ccm_core.groups: ccm_core.groups:
# admins # admins
- party_id: 40 - party_id: 40

View File

@ -31,21 +31,23 @@
<ccm_core.users party_id="-10" <ccm_core.users party_id="-10"
family_name="Doe" family_name="Doe"
given_name="John" given_name="John"
email_address="john.doe@example.com" primary_email_address="john.doe@example.com"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==" password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false"
verified="true"/> />
<ccm_core.users party_id="-20" <ccm_core.users party_id="-20"
family_name="Mustermann" family_name="Mustermann"
given_name="Max" given_name="Max"
email_address="max.muster@example.org" primary_email_address="max.muster@example.org"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==" password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false"
verified="true"/> />
<ccm_core.one_time_auth_tokens token_id="-100" <ccm_core.one_time_auth_tokens token_id="-100"
user_id="-10" user_id="-10"

View File

@ -31,19 +31,21 @@
<ccm_core.users party_id="-10" <ccm_core.users party_id="-10"
family_name="Doe" family_name="Doe"
given_name="John" given_name="John"
email_address="john.doe@example.com" primary_email_address="john.doe@example.com"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==" password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false"
verified="true"/> />
<ccm_core.users party_id="-20" <ccm_core.users party_id="-20"
family_name="Mustermann" family_name="Mustermann"
given_name="Max" given_name="Max"
email_address="max.muster@example.org" primary_email_address="max.muster@example.org"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==" password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false"
verified="true"/> />
</dataset> </dataset>

View File

@ -31,21 +31,23 @@
<ccm_core.users party_id="-10" <ccm_core.users party_id="-10"
family_name="Doe" family_name="Doe"
given_name="John" given_name="John"
email_address="john.doe@example.com" primary_email_address="john.doe@example.com"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==" password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false"
verified="true"/> />
<ccm_core.users party_id="-20" <ccm_core.users party_id="-20"
family_name="Mustermann" family_name="Mustermann"
given_name="Max" given_name="Max"
email_address="max.muster@example.org" primary_email_address="max.muster@example.org"
primary_email_address_bouncing="false"
primary_email_address_verified="true"
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==" password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
bouncing="false"
banned="false" banned="false"
password_reset_required="false" password_reset_required="false"
verified="true"/> />
<ccm_core.one_time_auth_tokens <ccm_core.one_time_auth_tokens
token_id="-100" token_id="-100"

Some files were not shown because too many files have changed in this diff Show More