CCM NG: Various adjustments for import/export
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5710 8810af33-2d31-482b-a856-94f89814c4dfpull/2/head
parent
5f9bdd4f35
commit
f0daf20d22
|
|
@ -124,7 +124,6 @@ public class AssetManagerTest {
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.l10n.LocalizedString.class
|
.addPackage(org.libreccm.l10n.LocalizedString.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
.addPackage(org.libreccm.security.Permission.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())
|
||||||
|
|
|
||||||
|
|
@ -121,7 +121,6 @@ public class AssetRepositoryTest {
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.l10n.LocalizedString.class
|
.addPackage(org.libreccm.l10n.LocalizedString.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
.addPackage(org.libreccm.security.Permission.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())
|
||||||
|
|
|
||||||
|
|
@ -113,7 +113,6 @@ public class AttachmentListManagerTest {
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.l10n.LocalizedString.class
|
.addPackage(org.libreccm.l10n.LocalizedString.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
.addPackage(org.libreccm.security.Permission.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())
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,6 @@ public class ContentItemL10NManagerTest {
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.l10n.LocalizedString.class
|
.addPackage(org.libreccm.l10n.LocalizedString.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
.addPackage(org.libreccm.security.Permission.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())
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,6 @@ public class ContentItemManagerTest {
|
||||||
.addPackage(org.libreccm.l10n.LocalizedString.class
|
.addPackage(org.libreccm.l10n.LocalizedString.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.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.bebop.Component.class.getPackage())
|
.addPackage(com.arsdigita.bebop.Component.class.getPackage())
|
||||||
|
|
|
||||||
|
|
@ -122,7 +122,6 @@ public class ContentItemPermissionTest {
|
||||||
.addClass(org.libreccm.workflow.TaskAssignment.class)
|
.addClass(org.libreccm.workflow.TaskAssignment.class)
|
||||||
//Classes used by Role.class, User.class,
|
//Classes used by Role.class, User.class,
|
||||||
//org.libreccm.core.CcmObject.class
|
//org.libreccm.core.CcmObject.class
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
//Classes used by Shiro.class
|
//Classes used by Shiro.class
|
||||||
.addClass(org.libreccm.security.UserRepository.class)
|
.addClass(org.libreccm.security.UserRepository.class)
|
||||||
//Class used by User.class
|
//Class used by User.class
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,6 @@ public class ContentItemRepositoryTest {
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.l10n.LocalizedString.class
|
.addPackage(org.libreccm.l10n.LocalizedString.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
.addPackage(org.libreccm.security.Permission.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())
|
||||||
|
|
|
||||||
|
|
@ -139,7 +139,6 @@ public class ContentSectionManagerTest {
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.l10n.LocalizedString.class
|
.addPackage(org.libreccm.l10n.LocalizedString.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.portation.Portable.class.getPackage())
|
|
||||||
.addPackage(org.libreccm.jpa.utils.MimeTypeConverter.class.
|
.addPackage(org.libreccm.jpa.utils.MimeTypeConverter.class.
|
||||||
getPackage())
|
getPackage())
|
||||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
||||||
|
|
@ -164,7 +163,6 @@ public class ContentSectionManagerTest {
|
||||||
com.arsdigita.ui.admin.applications.DefaultApplicationSettingsPane.class)
|
com.arsdigita.ui.admin.applications.DefaultApplicationSettingsPane.class)
|
||||||
.addClass(org.libreccm.modules.Module.class)
|
.addClass(org.libreccm.modules.Module.class)
|
||||||
.addClass(org.libreccm.modules.RequiredModule.class)
|
.addClass(org.libreccm.modules.RequiredModule.class)
|
||||||
.addClass(org.libreccm.portation.Marshals.class)
|
|
||||||
.addPackage(org.librecms.dispatcher.ItemResolver.class.getPackage())
|
.addPackage(org.librecms.dispatcher.ItemResolver.class.getPackage())
|
||||||
.addPackage(com.arsdigita.util.Lockable.class.getPackage())
|
.addPackage(com.arsdigita.util.Lockable.class.getPackage())
|
||||||
.addPackage(com.arsdigita.web.BaseServlet.class.getPackage())
|
.addPackage(com.arsdigita.web.BaseServlet.class.getPackage())
|
||||||
|
|
|
||||||
|
|
@ -343,7 +343,6 @@ public class ContentTypeRepositoryTest {
|
||||||
.addClass(org.libreccm.pagemodel.PageModelComponentModel.class)
|
.addClass(org.libreccm.pagemodel.PageModelComponentModel.class)
|
||||||
.addClass(org.libreccm.pagemodel.PageModelVersion.class)
|
.addClass(org.libreccm.pagemodel.PageModelVersion.class)
|
||||||
.addPackage(org.libreccm.pagemodel.styles.Styles.class.getPackage())
|
.addPackage(org.libreccm.pagemodel.styles.Styles.class.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addClass(org.libreccm.security.AuthorizationInterceptor.class)
|
.addClass(org.libreccm.security.AuthorizationInterceptor.class)
|
||||||
.addClass(org.libreccm.security.AuthorizationRequired.class)
|
.addClass(org.libreccm.security.AuthorizationRequired.class)
|
||||||
.addClass(org.libreccm.security.CcmShiroRealm.class)
|
.addClass(org.libreccm.security.CcmShiroRealm.class)
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,6 @@ public class FolderManagerTest {
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.jpa.utils.MimeTypeConverter.class.
|
.addPackage(org.libreccm.jpa.utils.MimeTypeConverter.class.
|
||||||
getPackage())
|
getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
.addPackage(org.libreccm.security.Permission.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())
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,6 @@ public class ItemAttachmentManagerTest {
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.l10n.LocalizedString.class
|
.addPackage(org.libreccm.l10n.LocalizedString.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
.addPackage(org.libreccm.security.Permission.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())
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@ package org.libreccm.categorization;
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityReference;
|
import com.fasterxml.jackson.annotation.JsonIdentityReference;
|
||||||
import org.libreccm.core.CcmObject;
|
import org.libreccm.core.CcmObject;
|
||||||
import org.libreccm.portation.Portable;
|
|
||||||
import org.libreccm.security.Relation;
|
import org.libreccm.security.Relation;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
||||||
import org.hibernate.validator.constraints.NotBlank;
|
import org.hibernate.validator.constraints.NotBlank;
|
||||||
import org.libreccm.core.CcmObject;
|
import org.libreccm.core.CcmObject;
|
||||||
import org.libreccm.l10n.LocalizedString;
|
import org.libreccm.l10n.LocalizedString;
|
||||||
import org.libreccm.portation.Portable;
|
|
||||||
import org.libreccm.security.RecursivePermissions;
|
import org.libreccm.security.RecursivePermissions;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,6 @@ import org.hibernate.validator.constraints.NotBlank;
|
||||||
import org.hibernate.validator.constraints.URL;
|
import org.hibernate.validator.constraints.URL;
|
||||||
import org.libreccm.core.CcmObject;
|
import org.libreccm.core.CcmObject;
|
||||||
import org.libreccm.l10n.LocalizedString;
|
import org.libreccm.l10n.LocalizedString;
|
||||||
import org.libreccm.portation.Portable;
|
|
||||||
import org.libreccm.security.RecursivePermissions;
|
import org.libreccm.security.RecursivePermissions;
|
||||||
import org.libreccm.web.CcmApplication;
|
import org.libreccm.web.CcmApplication;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,14 +21,27 @@ package org.libreccm.core;
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
||||||
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
||||||
import org.libreccm.l10n.LocalizedString;
|
import org.libreccm.l10n.LocalizedString;
|
||||||
import org.libreccm.portation.Portable;
|
|
||||||
|
|
||||||
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.libreccm.imexport.Exportable;
|
||||||
|
|
||||||
|
import javax.persistence.AssociationOverride;
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.Embedded;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.Id;
|
||||||
|
import javax.persistence.Inheritance;
|
||||||
|
import javax.persistence.InheritanceType;
|
||||||
|
import javax.persistence.JoinColumn;
|
||||||
|
import javax.persistence.JoinTable;
|
||||||
|
import javax.persistence.NamedQueries;
|
||||||
|
import javax.persistence.NamedQuery;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is a port of the old {@code ResourceType} entity.
|
* This class is a port of the old {@code ResourceType} entity.
|
||||||
*
|
*
|
||||||
|
|
@ -46,18 +59,21 @@ import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||||
@Table(name = "RESOURCE_TYPES", schema = DB_SCHEMA)
|
@Table(name = "RESOURCE_TYPES", schema = DB_SCHEMA)
|
||||||
@Inheritance(strategy = InheritanceType.JOINED)
|
@Inheritance(strategy = InheritanceType.JOINED)
|
||||||
@NamedQueries({
|
@NamedQueries({
|
||||||
|
@NamedQuery(name = "ResourceType.findByUuid",
|
||||||
|
query = "SELECT r FROM ResourceType r WHERE r.uuid = :uuid")
|
||||||
|
,
|
||||||
@NamedQuery(name = "ResourceType.findByTitle",
|
@NamedQuery(name = "ResourceType.findByTitle",
|
||||||
query = "SELECT r FROM ResourceType r WHERE r.title = :title")
|
query = "SELECT r FROM ResourceType r WHERE r.title = :title")
|
||||||
})
|
})
|
||||||
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
|
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
|
||||||
resolver = ResourceTypeIdResolver.class,
|
resolver = ResourceTypeIdResolver.class,
|
||||||
property = "title")
|
property = "uuid")
|
||||||
@SuppressWarnings({"PMD.CyclomaticComplexity",
|
@SuppressWarnings({"PMD.CyclomaticComplexity",
|
||||||
"PMD.StdCyclomaticComplexity",
|
"PMD.StdCyclomaticComplexity",
|
||||||
"PMD.ModifiedCyclomaticComplexity",
|
"PMD.ModifiedCyclomaticComplexity",
|
||||||
"PMD.NPathComplexity",
|
"PMD.NPathComplexity",
|
||||||
"PMD.LongVariable"})
|
"PMD.LongVariable"})
|
||||||
public class ResourceType implements Serializable, Portable {
|
public class ResourceType implements Serializable, Exportable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 4563584142251370627L;
|
private static final long serialVersionUID = 4563584142251370627L;
|
||||||
|
|
||||||
|
|
@ -65,6 +81,9 @@ public class ResourceType implements Serializable, Portable {
|
||||||
@Column(name = "RESOURCE_TYPE_ID")
|
@Column(name = "RESOURCE_TYPE_ID")
|
||||||
private long resourceTypeId;
|
private long resourceTypeId;
|
||||||
|
|
||||||
|
@Column(name = "UUID", unique = true, nullable = false)
|
||||||
|
private String uuid;
|
||||||
|
|
||||||
@Column(name = "TITLE", length = 254, nullable = false)
|
@Column(name = "TITLE", length = 254, nullable = false)
|
||||||
private String title;
|
private String title;
|
||||||
|
|
||||||
|
|
@ -97,10 +116,19 @@ public class ResourceType implements Serializable, Portable {
|
||||||
return resourceTypeId;
|
return resourceTypeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setResourceTypeId(final long resourceTypeId) {
|
protected void setResourceTypeId(final long resourceTypeId) {
|
||||||
this.resourceTypeId = resourceTypeId;
|
this.resourceTypeId = resourceTypeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUuid() {
|
||||||
|
return uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setUuid(final String uuid) {
|
||||||
|
this.uuid = uuid;
|
||||||
|
}
|
||||||
|
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
return title;
|
return title;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -47,10 +47,11 @@ public class ResourceTypeIdResolver implements Serializable, ObjectIdResolver {
|
||||||
.findBean(ResourceTypeRepository.class);
|
.findBean(ResourceTypeRepository.class);
|
||||||
|
|
||||||
return resourceTypeRepository
|
return resourceTypeRepository
|
||||||
.findByTitle(id.key.toString())
|
.findByUuid(id.key.toString())
|
||||||
.orElseThrow(() -> new IllegalArgumentException(String
|
.orElseThrow(() -> new IllegalArgumentException(String
|
||||||
.format("No ResourceType with title %s in the " +
|
.format("No ResourceType with uuid %s in the " +
|
||||||
"database.", id.key.toString())));
|
"database.",
|
||||||
|
id.key.toString())));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2015 LibreCCM Foundation.
|
* Copyright (C) 2018 LibreCCM Foundation.
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
|
@ -18,32 +18,34 @@
|
||||||
*/
|
*/
|
||||||
package org.libreccm.core;
|
package org.libreccm.core;
|
||||||
|
|
||||||
import org.libreccm.portation.AbstractMarshaller;
|
import org.libreccm.imexport.AbstractEntityImExporter;
|
||||||
import org.libreccm.portation.Marshals;
|
import org.libreccm.imexport.Processes;
|
||||||
|
|
||||||
import javax.enterprise.context.RequestScoped;
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
|
*
|
||||||
* @version created the 8/22/17
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
@RequestScoped
|
@Processes(ResourceType.class)
|
||||||
@Marshals(ResourceType.class)
|
public class ResourceTypeImExporter
|
||||||
public class ResourceTypeMarshaller extends AbstractMarshaller<ResourceType> {
|
extends AbstractEntityImExporter<ResourceType>{
|
||||||
|
|
||||||
private static final long serialVersionUID = 79174993117568181L;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ResourceTypeRepository resourceTypeRepository;
|
private ResourceTypeRepository repository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Class<ResourceType> getObjectClass() {
|
protected Class<ResourceType> getEntityClass() {
|
||||||
|
|
||||||
return ResourceType.class;
|
return ResourceType.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void insertIntoDb(ResourceType portableObject) {
|
protected void saveImportedEntity(final ResourceType entity) {
|
||||||
resourceTypeRepository.save(portableObject);
|
|
||||||
|
repository.save(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -21,7 +21,9 @@ package org.libreccm.core;
|
||||||
import javax.enterprise.context.RequestScoped;
|
import javax.enterprise.context.RequestScoped;
|
||||||
import javax.persistence.NoResultException;
|
import javax.persistence.NoResultException;
|
||||||
import javax.persistence.TypedQuery;
|
import javax.persistence.TypedQuery;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A repository for executing CRUD operations on {@link ResourceType} objects.
|
* A repository for executing CRUD operations on {@link ResourceType} objects.
|
||||||
|
|
@ -30,7 +32,7 @@ import java.util.Optional;
|
||||||
* {@link ResourceType}s from the database. This is the responsibility of the
|
* {@link ResourceType}s from the database. This is the responsibility of the
|
||||||
* application using the {@link ResourceType}.
|
* application using the {@link ResourceType}.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
|
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@RequestScoped
|
@RequestScoped
|
||||||
|
|
@ -59,6 +61,28 @@ public class ResourceTypeRepository
|
||||||
return entity.getTitle() == null;
|
return entity.getTitle() == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initNewEntity(final ResourceType entity) {
|
||||||
|
|
||||||
|
if (entity.getResourceTypeId() == 0) {
|
||||||
|
|
||||||
|
if (entity.getUuid() == null) {
|
||||||
|
entity.setUuid(UUID.randomUUID().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<ResourceType> findByUuid(final String uuid) {
|
||||||
|
|
||||||
|
final TypedQuery<ResourceType> query = getEntityManager()
|
||||||
|
.createNamedQuery("ResourceType.findByUuid", ResourceType.class);
|
||||||
|
query.setParameter("uuid", uuid);
|
||||||
|
|
||||||
|
return getSingleResult(query);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds a {@link ResourceType} by its title.
|
* Finds a {@link ResourceType} by its title.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -1,241 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2015 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.portation;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
|
||||||
import com.fasterxml.jackson.dataformat.xml.JacksonXmlModule;
|
|
||||||
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
|
||||||
import org.apache.logging.log4j.Logger;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileWriter;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Abstract class responsible for ex- and importing entity-objects to several
|
|
||||||
* file-formats. Every entity-class (e.g. DocRepo.File) needs to have its own
|
|
||||||
* extension of this class to override the abstract methods, making it possible
|
|
||||||
* to ex- or import that extending entity-class (e.g. DocRepo .FileMarshal).
|
|
||||||
*
|
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
|
|
||||||
* @version created the 2/10/16
|
|
||||||
* @param <P>
|
|
||||||
*/
|
|
||||||
public abstract class AbstractMarshaller<P extends Portable> implements Serializable {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -5796378713915256691L;
|
|
||||||
|
|
||||||
private static final Logger LOGGER = LogManager.getLogger(
|
|
||||||
AbstractMarshaller.class);
|
|
||||||
|
|
||||||
private Format format;
|
|
||||||
private String filename;
|
|
||||||
|
|
||||||
// XML specifics
|
|
||||||
ObjectMapper xmlMapper;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prepares import and export routine. Sets the format in which the ex- or
|
|
||||||
* import will take place and sets the name of the file exported to or
|
|
||||||
* imported from. Furthermore it is possible to decide for or against
|
|
||||||
* indentation in the output file.
|
|
||||||
*
|
|
||||||
* @param format The format of the ex-/import
|
|
||||||
* @param filename The filename of the file exported to or imported from
|
|
||||||
* @param indentation whether or not indentation
|
|
||||||
*/
|
|
||||||
public void prepare(final Format format,
|
|
||||||
String filename,
|
|
||||||
boolean indentation) {
|
|
||||||
this.format = format;
|
|
||||||
this.filename = filename;
|
|
||||||
|
|
||||||
switch (this.format) {
|
|
||||||
case XML:
|
|
||||||
// for additional configuration
|
|
||||||
JacksonXmlModule module = new JacksonXmlModule();
|
|
||||||
module.setDefaultUseWrapper(false);
|
|
||||||
xmlMapper = new XmlMapper(module);
|
|
||||||
if (indentation) {
|
|
||||||
xmlMapper.enable(SerializationFeature.INDENT_OUTPUT);
|
|
||||||
}
|
|
||||||
//xmlMapper.registerModule(new JaxbAnnotationModule());
|
|
||||||
xmlMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Same as {@code prepare}-methode above. Adds distinction between path and
|
|
||||||
* filename.
|
|
||||||
*
|
|
||||||
* @param format The format of the ex-/import
|
|
||||||
* @param folderPath The folderPath of the file exported to or imported
|
|
||||||
* from
|
|
||||||
* @param filename The filename of the file exported to or imported from
|
|
||||||
* @param indentation whether or not indentation
|
|
||||||
*
|
|
||||||
public void prepare(final Format format,
|
|
||||||
String folderPath, String filename,
|
|
||||||
boolean indentation) {
|
|
||||||
File file = new File(folderPath);
|
|
||||||
if (file.exists() || file.mkdirs()) {
|
|
||||||
prepare(format, folderPath + "/" + filename, indentation);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Export routine for lists with the same object type {@code P}. Creates a
|
|
||||||
* new file with the prepared filename and starts, depending on the set
|
|
||||||
* format, the export process, object after object.
|
|
||||||
*
|
|
||||||
* @param exportList List of equally typed objects.
|
|
||||||
*/
|
|
||||||
public void exportList(final List<P> exportList) {
|
|
||||||
File file = new File(filename);
|
|
||||||
FileWriter fileWriter = null;
|
|
||||||
|
|
||||||
try {
|
|
||||||
fileWriter = new FileWriter(file);
|
|
||||||
} catch (IOException e) {
|
|
||||||
LOGGER.error("Unable to open a fileWriter for the file"
|
|
||||||
+ " with the name {}.", file.getName());
|
|
||||||
LOGGER.error(e);
|
|
||||||
}
|
|
||||||
if (fileWriter != null) {
|
|
||||||
for (P object : exportList) {
|
|
||||||
String line = null;
|
|
||||||
|
|
||||||
switch (format) {
|
|
||||||
case XML:
|
|
||||||
try {
|
|
||||||
line = xmlMapper.writeValueAsString(object);
|
|
||||||
//LOGGER.info(line);
|
|
||||||
} catch (IOException e) {
|
|
||||||
LOGGER.error("Unable to write objetct "
|
|
||||||
+ "of class {} as XML string with name {}.",
|
|
||||||
object.getClass(), file.getName());
|
|
||||||
LOGGER.error(e);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (line != null) {
|
|
||||||
try {
|
|
||||||
fileWriter.write(line);
|
|
||||||
fileWriter.write(System.getProperty("line.separator"));
|
|
||||||
} catch (IOException e) {
|
|
||||||
LOGGER.error("Unable to write to file with"
|
|
||||||
+ " the name {}.", file.getName());
|
|
||||||
LOGGER.error(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
fileWriter.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
LOGGER.error("Unable to close a fileWriter for the"
|
|
||||||
+ " file with the name {}.", file.getName());
|
|
||||||
LOGGER.error(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Import routine for files containing objects of the same type {@code P}.
|
|
||||||
* Creates a new list of strings to read the file line by line. Each line of
|
|
||||||
* the list represents an object of the file. Then retrieves each object
|
|
||||||
* from the corresponding string in the list.
|
|
||||||
*
|
|
||||||
* @return If error occurs true, otherwise false.
|
|
||||||
*/
|
|
||||||
public boolean importFile() {
|
|
||||||
boolean error = false;
|
|
||||||
File file = new File(filename);
|
|
||||||
|
|
||||||
List<String> lines = null;
|
|
||||||
try {
|
|
||||||
lines = Files.readAllLines(file.toPath());
|
|
||||||
} catch (IOException e) {
|
|
||||||
LOGGER.error("Unable to read lines of the file with " + "name {}.",
|
|
||||||
file.getName());
|
|
||||||
LOGGER.error(e);
|
|
||||||
error = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
List<P> objects = new ArrayList<>();
|
|
||||||
if (lines != null) {
|
|
||||||
int emptyObjects = 0;
|
|
||||||
for (String line : lines) {
|
|
||||||
P object = null;
|
|
||||||
switch (format) {
|
|
||||||
case XML:
|
|
||||||
try {
|
|
||||||
object = xmlMapper.readValue(line, getObjectClass());
|
|
||||||
} catch (IOException e) {
|
|
||||||
LOGGER.error("Unable to read objects "
|
|
||||||
+ "from XML line:\n \"{}\"", line);
|
|
||||||
LOGGER.error("Exception: ", e);
|
|
||||||
error = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (object != null) {
|
|
||||||
insertIntoDb(object);
|
|
||||||
objects.add(object);
|
|
||||||
} else {
|
|
||||||
emptyObjects += 1;
|
|
||||||
LOGGER.info("Count of empty objects: {}", emptyObjects);
|
|
||||||
error = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Abstract method to get the object class to determine the type {@code P}.
|
|
||||||
*
|
|
||||||
* @return The object class
|
|
||||||
*/
|
|
||||||
protected abstract Class<P> getObjectClass();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Abstract method to insert every imported object into the database.
|
|
||||||
*
|
|
||||||
* @param portableObject An object of type {@code P}
|
|
||||||
*/
|
|
||||||
protected abstract void insertIntoDb(P portableObject);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2015 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.portation;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
|
|
||||||
* @version created the 03.02.2016
|
|
||||||
*/
|
|
||||||
public enum Format {
|
|
||||||
XML
|
|
||||||
}
|
|
||||||
|
|
@ -1,225 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2015 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.portation;
|
|
||||||
|
|
||||||
import org.libreccm.core.Identifiable;
|
|
||||||
|
|
||||||
import javax.enterprise.inject.Any;
|
|
||||||
import javax.enterprise.inject.Instance;
|
|
||||||
import javax.enterprise.util.AnnotationLiteral;
|
|
||||||
import javax.faces.bean.RequestScoped;
|
|
||||||
import javax.inject.Inject;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Central class for exporting and importing objects of this system stored in
|
|
||||||
* the database. Retrieves all available implementations of
|
|
||||||
* {@link AbstractMarshaller} using CDI. The implementations have to be CDI
|
|
||||||
* beans of course. Also they must be annotated with the {@link Marshals}
|
|
||||||
* annotation.
|
|
||||||
*
|
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
|
|
||||||
* @version created the 03.02.2016
|
|
||||||
*/
|
|
||||||
@RequestScoped
|
|
||||||
@Deprecated /*needs to be reviewed when integrating import/export in gui*/
|
|
||||||
public class Marshaller implements Serializable {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 6769177147719834999L;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Any
|
|
||||||
private Instance<AbstractMarshaller<? extends Portable>> marshallerInstances;
|
|
||||||
|
|
||||||
// Maps lists with objects of the same type to their typ.
|
|
||||||
// The type represents the key, the lists the values
|
|
||||||
private Map<Class<? extends Portable>, List<Portable>> classListMap;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Main export method. Organizes the objects into list of the same type
|
|
||||||
* and calls a second export method for each list.
|
|
||||||
*
|
|
||||||
* @param objects All objects to be exported
|
|
||||||
* @param format The export style/format e.g. CSV or JSON
|
|
||||||
* @param filename The name of the file to be exported to
|
|
||||||
*/
|
|
||||||
public void exportObjects(List<Portable> objects,
|
|
||||||
Format format,
|
|
||||||
String filename) {
|
|
||||||
putObjects(objects);
|
|
||||||
|
|
||||||
for (Map.Entry<Class<? extends Portable>, List<Portable>>
|
|
||||||
classListEntry : classListMap.entrySet()) {
|
|
||||||
exportList(classListEntry.getValue(), classListEntry.getKey(),
|
|
||||||
format, filename);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Organizes a list of different {@link Identifiable} objects into a map
|
|
||||||
* assigning lists of the same type to their type as values to a key. The
|
|
||||||
* type which all objects of that list have in common is their key.
|
|
||||||
* That opens the possibility of being certain of the objects types in
|
|
||||||
* the list. Guarantied through this implementation.
|
|
||||||
*
|
|
||||||
* @param objects list of all objects being organized
|
|
||||||
*/
|
|
||||||
private void putObjects(List<Portable> objects) {
|
|
||||||
for (Portable object : objects) {
|
|
||||||
Class<? extends Portable> type = object.getClass();
|
|
||||||
|
|
||||||
if (classListMap.containsKey(type)) {
|
|
||||||
classListMap.get(type).add(object);
|
|
||||||
} else {
|
|
||||||
List<Portable> values = new ArrayList<>();
|
|
||||||
values.add(object);
|
|
||||||
classListMap.put(type, values);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Selects the right marshaller for the given type, initializes that
|
|
||||||
* marshaller for the given export wishes and calls the export method of
|
|
||||||
* that marshaller upon the given list of same typed objects.
|
|
||||||
*
|
|
||||||
* Naming convention for the export file name:
|
|
||||||
* <basic file name>__<type/class name>.<format>
|
|
||||||
*
|
|
||||||
* @param list List of objects to be exported of the same type
|
|
||||||
* @param type The class of the type
|
|
||||||
* @param format The export style
|
|
||||||
* @param filename The filename
|
|
||||||
* @param <P> The type of the current marshaller
|
|
||||||
*/
|
|
||||||
private <P extends Portable> void exportList(List<P> list,
|
|
||||||
Class<? extends P> type,
|
|
||||||
Format format,
|
|
||||||
String filename)
|
|
||||||
throws IllegalArgumentException {
|
|
||||||
|
|
||||||
final Instance<AbstractMarshaller<? extends Portable>>
|
|
||||||
marshallerInstance = marshallerInstances.select(new
|
|
||||||
MarshalsLiteral(type));
|
|
||||||
|
|
||||||
if (marshallerInstance.isUnsatisfied()) {
|
|
||||||
//If there are no marshallers we have a problem...
|
|
||||||
throw new IllegalArgumentException(String.format(
|
|
||||||
"No marshallers for \"%s\" found.", type.getName()));
|
|
||||||
} else if (marshallerInstance.isAmbiguous()) {
|
|
||||||
//If there is more than one marshaller something is wrong...
|
|
||||||
throw new IllegalArgumentException(String.format(
|
|
||||||
"More than one marshaller for \"%s\" found.", type
|
|
||||||
.getName()));
|
|
||||||
} else {
|
|
||||||
// Get the marshaller for this list and call the export method.
|
|
||||||
final Iterator<AbstractMarshaller<? extends Portable>>
|
|
||||||
iterator = marshallerInstance.iterator();
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
final AbstractMarshaller<P> marshaller = (AbstractMarshaller<P>)
|
|
||||||
iterator.next();
|
|
||||||
|
|
||||||
marshaller.prepare(format, filename + "__" + type.toString(),
|
|
||||||
false);
|
|
||||||
marshaller.exportList(list);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Selects the right marshaller for each file being imported depending on
|
|
||||||
* the filename. Therefore the filename has to contain the name of the
|
|
||||||
* class this file stores objects for. The marshaller will then be
|
|
||||||
* initialized and be called for importing the objects contained in the
|
|
||||||
* file being processed.
|
|
||||||
*
|
|
||||||
* Naming convention for the import file name:
|
|
||||||
* <basic file name>__<type/class name>.<format>
|
|
||||||
*
|
|
||||||
* @param filenames List of filenames for the files wishing to be imported
|
|
||||||
* @param format The import style
|
|
||||||
* @param <P> The type of the current marshaller
|
|
||||||
*/
|
|
||||||
public <P extends Portable> void importFiles(List<String> filenames,
|
|
||||||
Format format)
|
|
||||||
throws IllegalArgumentException {
|
|
||||||
|
|
||||||
for (String filename : filenames) {
|
|
||||||
String[] splitFilename = filename.split("__");
|
|
||||||
String className =
|
|
||||||
splitFilename[splitFilename.length].split(".")[0];
|
|
||||||
|
|
||||||
try {
|
|
||||||
Class clazz = Class.forName(className);
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
Class<P> type = clazz.asSubclass(Portable.class);
|
|
||||||
|
|
||||||
final Instance<AbstractMarshaller<? extends Portable>>
|
|
||||||
marshallerInstance = marshallerInstances.select(new
|
|
||||||
MarshalsLiteral(type));
|
|
||||||
|
|
||||||
if (marshallerInstance.isUnsatisfied()) {
|
|
||||||
//If there are no marshallers we have a problem...
|
|
||||||
throw new IllegalArgumentException(String.format(
|
|
||||||
"No marshallers for \"%s\" found.", type.getName()));
|
|
||||||
} else if (marshallerInstance.isAmbiguous()) {
|
|
||||||
//If there is more than one marshaller something is wrong...
|
|
||||||
throw new IllegalArgumentException(String.format(
|
|
||||||
"More than one marshaller for \"%s\" found.", type
|
|
||||||
.getName()));
|
|
||||||
} else {
|
|
||||||
// Get the marshaller for this list and call the export method.
|
|
||||||
final Iterator<AbstractMarshaller<? extends Portable>>
|
|
||||||
iterator = marshallerInstance.iterator();
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
final AbstractMarshaller<P> marshaller = (AbstractMarshaller<P>)
|
|
||||||
iterator.next();
|
|
||||||
|
|
||||||
marshaller.prepare(format, filename, false);
|
|
||||||
marshaller.importFile();
|
|
||||||
}
|
|
||||||
} catch (ClassNotFoundException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link AnnotationLiteral} used for filtering the available marshallers.
|
|
||||||
*/
|
|
||||||
private class MarshalsLiteral extends AnnotationLiteral<Marshals>
|
|
||||||
implements Marshals {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -8093783826632252875L;
|
|
||||||
private final Class<? extends Portable> entityClass;
|
|
||||||
|
|
||||||
public MarshalsLiteral(Class<? extends Portable> entityClass) {
|
|
||||||
this.entityClass = entityClass;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<? extends Portable> value() {
|
|
||||||
return entityClass;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2015 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.portation;
|
|
||||||
|
|
||||||
import org.libreccm.core.Identifiable;
|
|
||||||
|
|
||||||
import javax.inject.Qualifier;
|
|
||||||
import java.lang.annotation.ElementType;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.lang.annotation.Target;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Qualifier annotation for implementations of {@link AbstractMarshaller}. The
|
|
||||||
* value is the implementation of {@link Identifiable} for which the annotated
|
|
||||||
* {@link AbstractMarshaller} implementation exports and imports its instances.
|
|
||||||
*
|
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
|
|
||||||
* @version created the 2/24/16
|
|
||||||
*/
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
|
||||||
@Qualifier
|
|
||||||
@Target({ElementType.TYPE,
|
|
||||||
ElementType.PARAMETER,
|
|
||||||
ElementType.FIELD,
|
|
||||||
ElementType.METHOD})
|
|
||||||
public @interface Marshals {
|
|
||||||
|
|
||||||
Class<? extends Portable> value();
|
|
||||||
}
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2015 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.portation;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Interface for the ex-/import routine. With this interface any object class
|
|
||||||
* can declare itself ex- or im{@code portable}.
|
|
||||||
*
|
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
|
|
||||||
* @version created on 11/3/16
|
|
||||||
*/
|
|
||||||
public interface Portable {}
|
|
||||||
|
|
@ -25,7 +25,6 @@ import org.libreccm.categorization.Domain;
|
||||||
import org.libreccm.categorization.DomainManager;
|
import org.libreccm.categorization.DomainManager;
|
||||||
import org.libreccm.categorization.DomainOwnership;
|
import org.libreccm.categorization.DomainOwnership;
|
||||||
import org.libreccm.core.Resource;
|
import org.libreccm.core.Resource;
|
||||||
import org.libreccm.portation.Portable;
|
|
||||||
|
|
||||||
import javax.persistence.FetchType;
|
import javax.persistence.FetchType;
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
|
|
||||||
|
|
@ -22,15 +22,31 @@ import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityReference;
|
import com.fasterxml.jackson.annotation.JsonIdentityReference;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
||||||
import org.libreccm.portation.Portable;
|
|
||||||
import org.libreccm.security.User;
|
import org.libreccm.security.User;
|
||||||
|
|
||||||
import javax.persistence.*;
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||||
|
|
||||||
|
import org.libreccm.imexport.Exportable;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.JoinColumn;
|
||||||
|
import javax.persistence.NamedQueries;
|
||||||
|
import javax.persistence.NamedQuery;
|
||||||
|
import javax.persistence.OneToMany;
|
||||||
|
import javax.persistence.OneToOne;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
import javax.persistence.Temporal;
|
||||||
|
import javax.persistence.TemporalType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A task which can be assigned to a user. Also a {@code AssignableTask} can be
|
* A task which can be assigned to a user. Also a {@code AssignableTask} can be
|
||||||
* locked by a user to indicate that the user is currently working on the object
|
* locked by a user to indicate that the user is currently working on the object
|
||||||
|
|
@ -86,7 +102,7 @@ import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||||
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
|
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
|
||||||
resolver = AssignableTaskIdResolver.class,
|
resolver = AssignableTaskIdResolver.class,
|
||||||
property = "uuid")
|
property = "uuid")
|
||||||
public class AssignableTask extends Task implements Serializable, Portable {
|
public class AssignableTask extends Task implements Serializable, Exportable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 4188064584389893019L;
|
private static final long serialVersionUID = 4188064584389893019L;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ import java.io.Serializable;
|
||||||
@RequestScoped
|
@RequestScoped
|
||||||
public class AssignableTaskIdResolver implements Serializable,
|
public class AssignableTaskIdResolver implements Serializable,
|
||||||
ObjectIdResolver {
|
ObjectIdResolver {
|
||||||
|
|
||||||
private static final long serialVersionUID = -4634332219001315735L;
|
private static final long serialVersionUID = -4634332219001315735L;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -51,8 +52,8 @@ public class AssignableTaskIdResolver implements Serializable,
|
||||||
return assignableTaskRepository
|
return assignableTaskRepository
|
||||||
.findByUuid(id.key.toString())
|
.findByUuid(id.key.toString())
|
||||||
.orElseThrow(() -> new IllegalArgumentException(String
|
.orElseThrow(() -> new IllegalArgumentException(String
|
||||||
.format("No assignable tasks with uuid %s in the " +
|
.format("No assignable tasks with uuid %s in the " + "database.",
|
||||||
"database.", id.key.toString())));
|
id.key.toString())));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -64,4 +65,5 @@ public class AssignableTaskIdResolver implements Serializable,
|
||||||
public boolean canUseFor(final ObjectIdResolver resolverType) {
|
public boolean canUseFor(final ObjectIdResolver resolverType) {
|
||||||
return resolverType instanceof AssignableTaskIdResolver;
|
return resolverType instanceof AssignableTaskIdResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,33 +18,38 @@
|
||||||
*/
|
*/
|
||||||
package org.libreccm.workflow;
|
package org.libreccm.workflow;
|
||||||
|
|
||||||
import org.libreccm.portation.AbstractMarshaller;
|
import org.libreccm.imexport.AbstractEntityImExporter;
|
||||||
import org.libreccm.portation.Marshals;
|
import org.libreccm.imexport.DependsOn;
|
||||||
|
import org.libreccm.imexport.Processes;
|
||||||
|
|
||||||
import javax.enterprise.context.RequestScoped;
|
import javax.enterprise.context.RequestScoped;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.transaction.Transactional;
|
import javax.transaction.Transactional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
|
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
|
||||||
* @version created on 11/18/16
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
@RequestScoped
|
@RequestScoped
|
||||||
@Marshals(AssignableTask.class)
|
@Processes(AssignableTask.class)
|
||||||
public class AssignableTaskMarshaller extends AbstractMarshaller<AssignableTask> {
|
@DependsOn(Workflow.class)
|
||||||
private static final long serialVersionUID = -2787744872933470651L;
|
public class AssignableTaskImExporter
|
||||||
|
extends AbstractEntityImExporter<AssignableTask> {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private AssignableTaskRepository assignableTaskRepository;
|
private AssignableTaskRepository assignableTaskRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Class<AssignableTask> getObjectClass() {
|
protected Class<AssignableTask> getEntityClass() {
|
||||||
return AssignableTask.class;
|
return AssignableTask.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(Transactional.TxType.REQUIRED)
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
protected void insertIntoDb(AssignableTask portableObject) {
|
protected void saveImportedEntity(final AssignableTask entity) {
|
||||||
assignableTaskRepository.save(portableObject);
|
|
||||||
|
assignableTaskRepository.save(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -20,15 +20,25 @@ package org.libreccm.workflow;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityReference;
|
import com.fasterxml.jackson.annotation.JsonIdentityReference;
|
||||||
import org.libreccm.portation.Portable;
|
|
||||||
import org.libreccm.security.Role;
|
import org.libreccm.security.Role;
|
||||||
|
|
||||||
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 com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
||||||
|
import org.libreccm.imexport.Exportable;
|
||||||
|
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.GeneratedValue;
|
||||||
|
import javax.persistence.GenerationType;
|
||||||
|
import javax.persistence.Id;
|
||||||
|
import javax.persistence.JoinColumn;
|
||||||
|
import javax.persistence.ManyToOne;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the assignment of a {@link AssignableTask} to a {@link Role}.
|
* Represents the assignment of a {@link AssignableTask} to a {@link Role}.
|
||||||
*
|
*
|
||||||
|
|
@ -36,9 +46,9 @@ import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||||
*/
|
*/
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "WORKFLOW_TASK_ASSIGNMENTS", schema = DB_SCHEMA)
|
@Table(name = "WORKFLOW_TASK_ASSIGNMENTS", schema = DB_SCHEMA)
|
||||||
@JsonIdentityInfo(generator = TaskAssignmentIdGenerator.class,
|
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
|
||||||
property = "customAssignId")
|
property = "customAssignId")
|
||||||
public class TaskAssignment implements Serializable, Portable {
|
public class TaskAssignment implements Serializable, Exportable {
|
||||||
|
|
||||||
private static final long serialVersionUID = -4427537363301565707L;
|
private static final long serialVersionUID = -4427537363301565707L;
|
||||||
|
|
||||||
|
|
@ -50,6 +60,9 @@ public class TaskAssignment implements Serializable, Portable {
|
||||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||||
private long taskAssignmentId;
|
private long taskAssignmentId;
|
||||||
|
|
||||||
|
@Column(name = "UUID", unique = true, nullable = false)
|
||||||
|
private String uuid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The task.
|
* The task.
|
||||||
*/
|
*/
|
||||||
|
|
@ -74,6 +87,16 @@ public class TaskAssignment implements Serializable, Portable {
|
||||||
this.taskAssignmentId = taskAssignmentId;
|
this.taskAssignmentId = taskAssignmentId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUuid() {
|
||||||
|
return uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setUuid(final String uuid) {
|
||||||
|
this.uuid = uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public AssignableTask getTask() {
|
public AssignableTask getTask() {
|
||||||
return task;
|
return task;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,71 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2015 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.workflow;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.ObjectIdGenerator;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
|
|
||||||
* @version created on 3/23/17
|
|
||||||
*/
|
|
||||||
public class TaskAssignmentIdGenerator extends ObjectIdGenerator<String> {
|
|
||||||
private static final long serialVersionUID = -5493483256068253010L;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<?> getScope() {
|
|
||||||
return TaskAssignment.class;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canUseFor(final ObjectIdGenerator<?> gen) {
|
|
||||||
return gen instanceof TaskAssignmentIdGenerator;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ObjectIdGenerator<String> forScope(final Class<?> scope) {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ObjectIdGenerator<String> newForSerialization(final Object context) {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IdKey key(final Object key) {
|
|
||||||
if (key == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return new IdKey(TaskAssignment.class, TaskAssignment.class, key);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String generateId(final Object forPojo) {
|
|
||||||
if (!(forPojo instanceof TaskAssignment)) {
|
|
||||||
throw new IllegalArgumentException(
|
|
||||||
"Only TaskAssignment instances are supported.");
|
|
||||||
}
|
|
||||||
|
|
||||||
final TaskAssignment assignment = (TaskAssignment) forPojo;
|
|
||||||
|
|
||||||
return String.format("{%s}{%s}",
|
|
||||||
assignment.getTask().getUuid(),
|
|
||||||
assignment.getRole().getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -18,8 +18,9 @@
|
||||||
*/
|
*/
|
||||||
package org.libreccm.workflow;
|
package org.libreccm.workflow;
|
||||||
|
|
||||||
import org.libreccm.portation.AbstractMarshaller;
|
import org.libreccm.imexport.AbstractEntityImExporter;
|
||||||
import org.libreccm.portation.Marshals;
|
import org.libreccm.imexport.DependsOn;
|
||||||
|
import org.libreccm.imexport.Processes;
|
||||||
|
|
||||||
import javax.enterprise.context.RequestScoped;
|
import javax.enterprise.context.RequestScoped;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
@ -27,29 +28,29 @@ import javax.persistence.EntityManager;
|
||||||
import javax.transaction.Transactional;
|
import javax.transaction.Transactional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
|
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
|
||||||
* @version created on 11/7/16
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
@RequestScoped
|
@RequestScoped
|
||||||
@Marshals(TaskAssignment.class)
|
@Processes(TaskAssignment.class)
|
||||||
public class TaskAssignmentMarshaller extends AbstractMarshaller<TaskAssignment> {
|
@DependsOn({AssignableTask.class})
|
||||||
private static final long serialVersionUID = 3717946510122661215L;
|
public class TaskAssignmentMarshaller
|
||||||
|
extends AbstractEntityImExporter<TaskAssignment> {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private EntityManager entityManager;
|
private EntityManager entityManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Class<TaskAssignment> getObjectClass() {
|
protected Class<TaskAssignment> getEntityClass() {
|
||||||
|
|
||||||
return TaskAssignment.class;
|
return TaskAssignment.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(Transactional.TxType.REQUIRED)
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
protected void insertIntoDb(TaskAssignment portableObject) {
|
protected void saveImportedEntity(final TaskAssignment entity) {
|
||||||
if (portableObject.getTaskAssignmentId() == 0) {
|
|
||||||
entityManager.persist(portableObject);
|
entityManager.persist(entity);
|
||||||
} else {
|
|
||||||
entityManager.merge(portableObject);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,14 +24,27 @@ import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
||||||
import org.hibernate.annotations.Type;
|
import org.hibernate.annotations.Type;
|
||||||
import org.libreccm.core.CoreConstants;
|
import org.libreccm.core.CoreConstants;
|
||||||
import org.libreccm.core.Identifiable;
|
import org.libreccm.core.Identifiable;
|
||||||
import org.libreccm.portation.Portable;
|
import org.libreccm.imexport.Exportable;
|
||||||
import org.libreccm.security.User;
|
import org.libreccm.security.User;
|
||||||
|
|
||||||
import javax.persistence.*;
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import javax.persistence.Basic;
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.GeneratedValue;
|
||||||
|
import javax.persistence.GenerationType;
|
||||||
|
import javax.persistence.Id;
|
||||||
|
import javax.persistence.JoinColumn;
|
||||||
|
import javax.persistence.Lob;
|
||||||
|
import javax.persistence.NamedQueries;
|
||||||
|
import javax.persistence.NamedQuery;
|
||||||
|
import javax.persistence.OneToOne;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A comment for a task. Comments are intended for other users, for example to
|
* A comment for a task. Comments are intended for other users, for example to
|
||||||
* inform them about problems etc. with the object.
|
* inform them about problems etc. with the object.
|
||||||
|
|
@ -48,7 +61,7 @@ import java.util.Objects;
|
||||||
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
|
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
|
||||||
resolver = TaskCommentIdResolver.class,
|
resolver = TaskCommentIdResolver.class,
|
||||||
property = "uuid")
|
property = "uuid")
|
||||||
public class TaskComment implements Identifiable, Serializable, Portable {
|
public class TaskComment implements Identifiable, Serializable, Exportable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 3842991529698351698L;
|
private static final long serialVersionUID = 3842991529698351698L;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,31 +18,34 @@
|
||||||
*/
|
*/
|
||||||
package org.libreccm.workflow;
|
package org.libreccm.workflow;
|
||||||
|
|
||||||
import org.libreccm.portation.AbstractMarshaller;
|
import org.libreccm.imexport.AbstractEntityImExporter;
|
||||||
import org.libreccm.portation.Marshals;
|
import org.libreccm.imexport.DependsOn;
|
||||||
|
import org.libreccm.imexport.Processes;
|
||||||
|
|
||||||
import javax.enterprise.context.RequestScoped;
|
import javax.enterprise.context.RequestScoped;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.transaction.Transactional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
|
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
|
||||||
* @version created the 9/27/17
|
* @author <a href="mailto:jens.pelzetter@uni-bremen.de">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
@RequestScoped
|
@RequestScoped
|
||||||
@Marshals(TaskComment.class)
|
@Processes(TaskComment.class)
|
||||||
public class TaskCommentMarshaller extends AbstractMarshaller<TaskComment> {
|
@DependsOn(AssignableTask.class)
|
||||||
private static final long serialVersionUID = -3259560130798503811L;
|
public class TaskCommentImExporter extends AbstractEntityImExporter<TaskComment> {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private TaskCommentRepository taskCommentRepository;
|
private TaskCommentRepository taskCommentRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Class<TaskComment> getObjectClass() {
|
protected Class<TaskComment> getEntityClass() {
|
||||||
return TaskComment.class;
|
return TaskComment.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void insertIntoDb(TaskComment portableObject) {
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
taskCommentRepository.save(portableObject);
|
protected void saveImportedEntity(TaskComment entity) {
|
||||||
|
taskCommentRepository.save(entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -20,8 +20,9 @@ package org.libreccm.workflow;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityReference;
|
import com.fasterxml.jackson.annotation.JsonIdentityReference;
|
||||||
|
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
||||||
import org.libreccm.core.CoreConstants;
|
import org.libreccm.core.CoreConstants;
|
||||||
import org.libreccm.portation.Portable;
|
import org.libreccm.imexport.Exportable;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
@ -41,9 +42,9 @@ import javax.persistence.Table;
|
||||||
*/
|
*/
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "WORKFLOW_TASK_DEPENDENCIES", schema = CoreConstants.DB_SCHEMA)
|
@Table(name = "WORKFLOW_TASK_DEPENDENCIES", schema = CoreConstants.DB_SCHEMA)
|
||||||
@JsonIdentityInfo(generator = TaskDependencyIdGenerator.class,
|
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
|
||||||
property = "customDepId")
|
property = "uuid")
|
||||||
public class TaskDependency implements Serializable, Portable {
|
public class TaskDependency implements Serializable, Exportable {
|
||||||
|
|
||||||
private static final long serialVersionUID = -4383255770131633943L;
|
private static final long serialVersionUID = -4383255770131633943L;
|
||||||
|
|
||||||
|
|
@ -52,6 +53,9 @@ public class TaskDependency implements Serializable, Portable {
|
||||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||||
private long taskDependencyId;
|
private long taskDependencyId;
|
||||||
|
|
||||||
|
@Column(name = "uuid", unique = true, nullable = false)
|
||||||
|
private String uuid;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
@JoinColumn(name = "BLOCKED_TASK_ID")
|
@JoinColumn(name = "BLOCKED_TASK_ID")
|
||||||
@JsonIdentityReference(alwaysAsId = true)
|
@JsonIdentityReference(alwaysAsId = true)
|
||||||
|
|
@ -66,10 +70,19 @@ public class TaskDependency implements Serializable, Portable {
|
||||||
return taskDependencyId;
|
return taskDependencyId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTaskDependencyId(final long taskDependencyId) {
|
protected void setTaskDependencyId(final long taskDependencyId) {
|
||||||
this.taskDependencyId = taskDependencyId;
|
this.taskDependencyId = taskDependencyId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUuid() {
|
||||||
|
return uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setUuid(final String uuid) {
|
||||||
|
this.uuid = uuid;
|
||||||
|
}
|
||||||
|
|
||||||
public Task getBlockedTask() {
|
public Task getBlockedTask() {
|
||||||
return blockedTask;
|
return blockedTask;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,71 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2015 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.workflow;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.ObjectIdGenerator;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
|
|
||||||
* @version created the 12/12/17
|
|
||||||
*/
|
|
||||||
public class TaskDependencyIdGenerator extends ObjectIdGenerator<String> {
|
|
||||||
private static final long serialVersionUID = -419865429626554749L;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<?> getScope() {
|
|
||||||
return TaskDependency.class;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canUseFor(ObjectIdGenerator<?> gen) {
|
|
||||||
return gen instanceof TaskDependencyIdGenerator;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ObjectIdGenerator<String> forScope(Class<?> scope) {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ObjectIdGenerator<String> newForSerialization(Object context) {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IdKey key(Object key) {
|
|
||||||
if (key == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return new IdKey(TaskDependency.class, TaskDependency.class, key);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String generateId(Object forPojo) {
|
|
||||||
if (!(forPojo instanceof TaskDependency)) {
|
|
||||||
throw new IllegalArgumentException(
|
|
||||||
"Only TaskDependency instances are supported.");
|
|
||||||
}
|
|
||||||
|
|
||||||
final TaskDependency dependency = (TaskDependency) forPojo;
|
|
||||||
|
|
||||||
return String.format("{%s}{%s}",
|
|
||||||
dependency.getBlockedTask().getUuid(),
|
|
||||||
dependency.getBlockingTask().getUuid());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -18,38 +18,38 @@
|
||||||
*/
|
*/
|
||||||
package org.libreccm.workflow;
|
package org.libreccm.workflow;
|
||||||
|
|
||||||
import org.libreccm.portation.AbstractMarshaller;
|
import org.libreccm.imexport.AbstractEntityImExporter;
|
||||||
import org.libreccm.portation.Marshals;
|
import org.libreccm.imexport.DependsOn;
|
||||||
|
import org.libreccm.imexport.Processes;
|
||||||
|
|
||||||
import javax.enterprise.context.RequestScoped;
|
import javax.enterprise.context.RequestScoped;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.persistence.EntityManager;
|
import javax.persistence.EntityManager;
|
||||||
import javax.transaction.Transactional;
|
import javax.transaction.Transactional;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
|
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
|
||||||
* @version created the 12/12/17
|
* @version created the 12/12/17
|
||||||
*/
|
*/
|
||||||
@RequestScoped
|
@RequestScoped
|
||||||
@Marshals(TaskDependency.class)
|
@Processes(TaskDependency.class)
|
||||||
public class TaskDependencyMarshaller extends AbstractMarshaller<TaskDependency> {
|
@DependsOn({AssignableTask.class})
|
||||||
private static final long serialVersionUID = 2753329911463298832L;
|
public class TaskDependencyMarshaller
|
||||||
|
extends AbstractEntityImExporter<TaskDependency> {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private EntityManager entityManager;
|
private EntityManager entityManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Class<TaskDependency> getObjectClass() {
|
protected Class<TaskDependency> getEntityClass() {
|
||||||
return TaskDependency.class;
|
return TaskDependency.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(Transactional.TxType.REQUIRED)
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
protected void insertIntoDb(TaskDependency portableObject) {
|
protected void saveImportedEntity(final TaskDependency entity) {
|
||||||
portableObject.setTaskDependencyId(portableObject
|
|
||||||
.getTaskDependencyId() * -1);
|
entityManager.persist(entity);
|
||||||
entityManager.merge(portableObject);
|
|
||||||
entityManager.flush();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
||||||
import org.libreccm.core.CcmObject;
|
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 org.libreccm.portation.Portable;
|
|
||||||
|
|
||||||
import javax.persistence.AssociationOverride;
|
import javax.persistence.AssociationOverride;
|
||||||
import javax.persistence.Column;
|
import javax.persistence.Column;
|
||||||
|
|
@ -48,6 +47,7 @@ import javax.persistence.OneToMany;
|
||||||
import javax.persistence.OneToOne;
|
import javax.persistence.OneToOne;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
@ -56,6 +56,8 @@ import java.util.Objects;
|
||||||
|
|
||||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||||
|
|
||||||
|
import org.libreccm.imexport.Exportable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A workflow is a collection of tasks which are performed on an object. Tasks
|
* A workflow is a collection of tasks which are performed on an object. Tasks
|
||||||
* can depend on each other.
|
* can depend on each other.
|
||||||
|
|
@ -78,7 +80,7 @@ import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||||
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
|
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
|
||||||
resolver = WorkflowIdResolver.class,
|
resolver = WorkflowIdResolver.class,
|
||||||
property = "uuid")
|
property = "uuid")
|
||||||
public class Workflow implements Identifiable, Serializable, Portable {
|
public class Workflow implements Identifiable, Serializable, Exportable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 4322500264543325829L;
|
private static final long serialVersionUID = 4322500264543325829L;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,11 +26,12 @@ import javax.enterprise.context.RequestScoped;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
|
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
|
||||||
* @version created on 3/23/17
|
* @version created on 3/23/17
|
||||||
*/
|
*/
|
||||||
@RequestScoped
|
@RequestScoped
|
||||||
public class WorkflowIdResolver implements Serializable, ObjectIdResolver {
|
public class WorkflowIdResolver implements Serializable, ObjectIdResolver {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1951611806946125510L;
|
private static final long serialVersionUID = 1951611806946125510L;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -50,8 +51,9 @@ public class WorkflowIdResolver implements Serializable, ObjectIdResolver {
|
||||||
return workflowRepository
|
return workflowRepository
|
||||||
.findByUuid(id.key.toString())
|
.findByUuid(id.key.toString())
|
||||||
.orElseThrow(() -> new IllegalArgumentException(String
|
.orElseThrow(() -> new IllegalArgumentException(String
|
||||||
.format("No workflows with uuid %s in the " +
|
.format("No workflows with uuid %s in the "
|
||||||
"database.", id.key.toString())));
|
+ "database.",
|
||||||
|
id.key.toString())));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -63,4 +65,5 @@ public class WorkflowIdResolver implements Serializable, ObjectIdResolver {
|
||||||
public boolean canUseFor(final ObjectIdResolver resolverType) {
|
public boolean canUseFor(final ObjectIdResolver resolverType) {
|
||||||
return resolverType instanceof WorkflowIdResolver;
|
return resolverType instanceof WorkflowIdResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2015 LibreCCM Foundation.
|
* Copyright (C) 2018 LibreCCM Foundation.
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
|
@ -18,33 +18,35 @@
|
||||||
*/
|
*/
|
||||||
package org.libreccm.workflow;
|
package org.libreccm.workflow;
|
||||||
|
|
||||||
import org.libreccm.portation.AbstractMarshaller;
|
import org.libreccm.imexport.AbstractEntityImExporter;
|
||||||
import org.libreccm.portation.Marshals;
|
import org.libreccm.imexport.Processes;
|
||||||
|
|
||||||
import javax.enterprise.context.RequestScoped;
|
import javax.enterprise.context.RequestScoped;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.transaction.Transactional;
|
import javax.transaction.Transactional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
|
*
|
||||||
* @version created on 11/7/16
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
@RequestScoped
|
@RequestScoped
|
||||||
@Marshals(Workflow.class)
|
@Processes(Workflow.class)
|
||||||
public class WorkflowMarshaller extends AbstractMarshaller<Workflow> {
|
public class WorkflowImExporter extends AbstractEntityImExporter<Workflow> {
|
||||||
private static final long serialVersionUID = 9126827334328274556L;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private WorkflowRepository workflowRepository;
|
private WorkflowRepository workflowRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Class<Workflow> getObjectClass() {
|
protected Class<Workflow> getEntityClass() {
|
||||||
|
|
||||||
return Workflow.class;
|
return Workflow.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(Transactional.TxType.REQUIRED)
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
protected void insertIntoDb(Workflow portableObject) {
|
protected void saveImportedEntity(final Workflow entity) {
|
||||||
workflowRepository.save(portableObject);
|
|
||||||
|
workflowRepository.save(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
alter table CCM_CORE.RESOURCE_TYPES
|
||||||
|
add column UUID varchar(255) not null;
|
||||||
|
|
||||||
|
alter table CCM_CORE.RESOURCE_TYPES
|
||||||
|
add constraint UK_ioax2ix2xmq3nw7el5k6orggb unique (UUID);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
alter table CCM_CORE.WORKFLOW_TASK_ASSIGNMENTS
|
||||||
|
add column UUID varchar(255) not null;
|
||||||
|
|
||||||
|
alter table CCM_CORE.WORKFLOW_TASK_ASSIGNMENTS
|
||||||
|
add constraint UK_gv93k167pe9qy3go9vjau1q2t unique (UUID);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
alter table CCM_CORE.WORKFLOW_TASK_DEPENDENCIES
|
||||||
|
add column UUID varchar(255) not null;
|
||||||
|
|
||||||
|
alter table CCM_CORE.WORKFLOW_TASK_DEPENDENCIES
|
||||||
|
add constraint UK_787va2ep8ucoul29qgsoaxnub unique (UUID);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
alter table CCM_CORE.RESOURCE_TYPES
|
||||||
|
add column UUID varchar(255) not null;
|
||||||
|
|
||||||
|
alter table CCM_CORE.RESOURCE_TYPES
|
||||||
|
add constraint UK_ioax2ix2xmq3nw7el5k6orggb unique (UUID);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -142,7 +142,6 @@ public class CategoryManagerTest {
|
||||||
.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(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.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)
|
||||||
.addAsLibraries(getModuleDependencies())
|
.addAsLibraries(getModuleDependencies())
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,6 @@ public class CategoryRepositoryTest {
|
||||||
.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(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.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)
|
||||||
.addAsLibraries(getModuleDependencies())
|
.addAsLibraries(getModuleDependencies())
|
||||||
|
|
|
||||||
|
|
@ -110,7 +110,6 @@ public class ConfigurationManagerTest {
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.l10n.LocalizedString.class
|
.addPackage(org.libreccm.l10n.LocalizedString.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
.addPackage(org.libreccm.security.Permission.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())
|
||||||
|
|
|
||||||
|
|
@ -128,8 +128,6 @@ public class CcmObjectRepositoryTest {
|
||||||
.getPackage())
|
.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())
|
||||||
// .addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addPackage(org.libreccm.portation.Portable.class.getPackage())
|
|
||||||
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class
|
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addAsLibraries(getModuleDependencies())
|
.addAsLibraries(getModuleDependencies())
|
||||||
|
|
|
||||||
|
|
@ -129,7 +129,6 @@ public class AuthorizationInterceptorTest {
|
||||||
.addPackage(com.arsdigita.xml.formatters.DateTimeFormatter.class
|
.addPackage(com.arsdigita.xml.formatters.DateTimeFormatter.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addClass(com.arsdigita.kernel.KernelConfig.class)
|
.addClass(com.arsdigita.kernel.KernelConfig.class)
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addClass(com.arsdigita.util.UncheckedWrapperException.class)
|
.addClass(com.arsdigita.util.UncheckedWrapperException.class)
|
||||||
.addAsLibraries(getModuleDependencies())
|
.addAsLibraries(getModuleDependencies())
|
||||||
.addAsResource("test-persistence.xml",
|
.addAsResource("test-persistence.xml",
|
||||||
|
|
|
||||||
|
|
@ -132,7 +132,6 @@ public class ChallengeManagerTest {
|
||||||
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
|
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.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)
|
||||||
.addAsLibraries(getModuleDependencies())
|
.addAsLibraries(getModuleDependencies())
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,6 @@ public class GroupManagerTest {
|
||||||
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||||
.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.portation.Portable.class)
|
|
||||||
.addAsLibraries(getModuleDependencies())
|
.addAsLibraries(getModuleDependencies())
|
||||||
.addAsResource("test-persistence.xml",
|
.addAsResource("test-persistence.xml",
|
||||||
"META-INF/persistence.xml")
|
"META-INF/persistence.xml")
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,6 @@ public class GroupRepositoryTest {
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
|
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.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",
|
||||||
|
|
|
||||||
|
|
@ -127,7 +127,6 @@ public class OneTimeAuthManagerTest {
|
||||||
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||||
.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.portation.Portable.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",
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,6 @@ public class PartyRepositoryTest {
|
||||||
.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)
|
||||||
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.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",
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,6 @@ public class PermissionCheckerTest {
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class
|
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addAsLibraries(getModuleDependencies())
|
.addAsLibraries(getModuleDependencies())
|
||||||
.addAsResource("test-persistence.xml",
|
.addAsResource("test-persistence.xml",
|
||||||
"META-INF/persistence.xml")
|
"META-INF/persistence.xml")
|
||||||
|
|
|
||||||
|
|
@ -132,7 +132,6 @@ public class PermissionManagerTest {
|
||||||
addPackage(com.arsdigita.kernel.security.SecurityConfig.class
|
addPackage(com.arsdigita.kernel.security.SecurityConfig.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addAsLibraries(getModuleDependencies())
|
.addAsLibraries(getModuleDependencies())
|
||||||
.addAsResource("test-persistence.xml",
|
.addAsResource("test-persistence.xml",
|
||||||
"META-INF/persistence.xml")
|
"META-INF/persistence.xml")
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,6 @@ public class RoleManagerTest {
|
||||||
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class
|
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addAsLibraries(getModuleDependencies())
|
.addAsLibraries(getModuleDependencies())
|
||||||
.addAsResource("test-persistence.xml",
|
.addAsResource("test-persistence.xml",
|
||||||
"META-INF/persistence.xml")
|
"META-INF/persistence.xml")
|
||||||
|
|
|
||||||
|
|
@ -129,7 +129,6 @@ public class RoleRepositoryTest {
|
||||||
getPackage())
|
getPackage())
|
||||||
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
|
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.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",
|
||||||
|
|
|
||||||
|
|
@ -147,7 +147,6 @@ 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.portation.Portable.class)
|
|
||||||
.addAsLibraries(getModuleDependencies())
|
.addAsLibraries(getModuleDependencies())
|
||||||
.addAsResource("test-persistence.xml",
|
.addAsResource("test-persistence.xml",
|
||||||
"META-INF/persistence.xml")
|
"META-INF/persistence.xml")
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,6 @@ public class SecuredIteratorTest {
|
||||||
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class
|
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(com.arsdigita.kernel.KernelConfig.class.getPackage())
|
.addPackage(com.arsdigita.kernel.KernelConfig.class.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addAsLibraries(getModuleDependencies())
|
.addAsLibraries(getModuleDependencies())
|
||||||
.addAsResource("test-persistence.xml",
|
.addAsResource("test-persistence.xml",
|
||||||
"META-INF/persistence.xml")
|
"META-INF/persistence.xml")
|
||||||
|
|
|
||||||
|
|
@ -121,7 +121,6 @@ public class ShiroTest {
|
||||||
.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.portation.Portable.class)
|
|
||||||
.addClass(org.libreccm.security.authorization.LabBean.class)
|
.addClass(org.libreccm.security.authorization.LabBean.class)
|
||||||
.addAsLibraries(getModuleDependencies())
|
.addAsLibraries(getModuleDependencies())
|
||||||
.addAsResource("test-persistence.xml",
|
.addAsResource("test-persistence.xml",
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,6 @@ public class UserManagerTest {
|
||||||
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class
|
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addAsLibraries(getModuleDependencies())
|
.addAsLibraries(getModuleDependencies())
|
||||||
.addAsResource("test-persistence.xml",
|
.addAsResource("test-persistence.xml",
|
||||||
"META-INF/persistence.xml")
|
"META-INF/persistence.xml")
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,6 @@ public class UserRepositoryTest {
|
||||||
.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)
|
||||||
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.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",
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
|
|
||||||
create schema CCM_CORE;
|
create schema CCM_CORE;
|
||||||
|
|
||||||
|
|
||||||
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,
|
||||||
|
|
@ -40,6 +39,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
CATEGORY_INDEX boolean,
|
CATEGORY_INDEX boolean,
|
||||||
OBJECT_ORDER bigint,
|
OBJECT_ORDER bigint,
|
||||||
TYPE varchar(255),
|
TYPE varchar(255),
|
||||||
|
UUID varchar(255) not null,
|
||||||
OBJECT_ID bigint,
|
OBJECT_ID bigint,
|
||||||
CATEGORY_ID bigint,
|
CATEGORY_ID bigint,
|
||||||
primary key (CATEGORIZATION_ID)
|
primary key (CATEGORIZATION_ID)
|
||||||
|
|
@ -123,6 +123,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
CONTEXT varchar(255),
|
CONTEXT varchar(255),
|
||||||
DOMAIN_ORDER bigint,
|
DOMAIN_ORDER bigint,
|
||||||
OWNER_ORDER bigint,
|
OWNER_ORDER bigint,
|
||||||
|
UUID varchar(255) not null,
|
||||||
domain_OBJECT_ID bigint not null,
|
domain_OBJECT_ID bigint not null,
|
||||||
owner_OBJECT_ID bigint not null,
|
owner_OBJECT_ID bigint not null,
|
||||||
primary key (OWNERSHIP_ID)
|
primary key (OWNERSHIP_ID)
|
||||||
|
|
@ -297,6 +298,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
|
|
||||||
create table CCM_CORE.GROUP_MEMBERSHIPS (
|
create table CCM_CORE.GROUP_MEMBERSHIPS (
|
||||||
MEMBERSHIP_ID bigint not null,
|
MEMBERSHIP_ID bigint not null,
|
||||||
|
UUID varchar(255) not null,
|
||||||
GROUP_ID bigint,
|
GROUP_ID bigint,
|
||||||
MEMBER_ID bigint,
|
MEMBER_ID bigint,
|
||||||
primary key (MEMBERSHIP_ID)
|
primary key (MEMBERSHIP_ID)
|
||||||
|
|
@ -452,6 +454,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
CREATION_IP varchar(255),
|
CREATION_IP varchar(255),
|
||||||
GRANTED_PRIVILEGE varchar(255),
|
GRANTED_PRIVILEGE varchar(255),
|
||||||
INHERITED boolean,
|
INHERITED boolean,
|
||||||
|
UUID varchar(255) not null,
|
||||||
CREATION_USER_ID bigint,
|
CREATION_USER_ID bigint,
|
||||||
GRANTEE_ID bigint,
|
GRANTEE_ID bigint,
|
||||||
INHERITED_FROM_ID bigint,
|
INHERITED_FROM_ID bigint,
|
||||||
|
|
@ -510,6 +513,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
RESOURCE_TYPE_ID bigint not null,
|
RESOURCE_TYPE_ID bigint not null,
|
||||||
SINGLETON boolean,
|
SINGLETON boolean,
|
||||||
TITLE varchar(254) not null,
|
TITLE varchar(254) not null,
|
||||||
|
UUID varchar(255) not null,
|
||||||
EMBEDDED_VIEW boolean,
|
EMBEDDED_VIEW boolean,
|
||||||
FULL_PAGE_VIEW boolean,
|
FULL_PAGE_VIEW boolean,
|
||||||
WORKSPACE_APP boolean,
|
WORKSPACE_APP boolean,
|
||||||
|
|
@ -533,6 +537,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
|
|
||||||
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,
|
||||||
MEMBER_ID bigint,
|
MEMBER_ID bigint,
|
||||||
ROLE_ID bigint,
|
ROLE_ID bigint,
|
||||||
primary key (MEMBERSHIP_ID)
|
primary key (MEMBERSHIP_ID)
|
||||||
|
|
@ -543,11 +548,11 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
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_LONG bigint,
|
|
||||||
SETTING_VALUE_BIG_DECIMAL decimal(19,2),
|
|
||||||
SETTING_VALUE_BOOLEAN boolean,
|
SETTING_VALUE_BOOLEAN boolean,
|
||||||
SETTING_VALUE_DOUBLE double,
|
SETTING_VALUE_LONG bigint,
|
||||||
SETTING_VALUE_STRING varchar(1024),
|
SETTING_VALUE_STRING varchar(1024),
|
||||||
|
SETTING_VALUE_DOUBLE double,
|
||||||
|
SETTING_VALUE_BIG_DECIMAL decimal(19,2),
|
||||||
primary key (SETTING_ID)
|
primary key (SETTING_ID)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -708,6 +713,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
|
|
||||||
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,
|
||||||
ROLE_ID bigint,
|
ROLE_ID bigint,
|
||||||
TASK_ID bigint,
|
TASK_ID bigint,
|
||||||
primary key (TASK_ASSIGNMENT_ID)
|
primary key (TASK_ASSIGNMENT_ID)
|
||||||
|
|
@ -724,6 +730,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
|
|
||||||
create table CCM_CORE.WORKFLOW_TASK_DEPENDENCIES (
|
create table CCM_CORE.WORKFLOW_TASK_DEPENDENCIES (
|
||||||
TASK_DEPENDENCY_ID bigint not null,
|
TASK_DEPENDENCY_ID bigint not null,
|
||||||
|
uuid varchar(255) not null,
|
||||||
BLOCKED_TASK_ID bigint,
|
BLOCKED_TASK_ID bigint,
|
||||||
BLOCKING_TASK_ID bigint,
|
BLOCKING_TASK_ID bigint,
|
||||||
primary key (TASK_DEPENDENCY_ID)
|
primary key (TASK_DEPENDENCY_ID)
|
||||||
|
|
@ -764,6 +771,9 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
primary key (WORKFLOW_ID)
|
primary key (WORKFLOW_ID)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
alter table CCM_CORE.CATEGORIZATIONS
|
||||||
|
add constraint UK_da7jus3wn1tr8poyaw9btxbrc unique (UUID);
|
||||||
|
|
||||||
alter table CCM_CORE.CATEGORY_DOMAINS
|
alter table CCM_CORE.CATEGORY_DOMAINS
|
||||||
add constraint UK_mb1riernf8a88u3mwl0bgfj8y unique (DOMAIN_KEY);
|
add constraint UK_mb1riernf8a88u3mwl0bgfj8y unique (DOMAIN_KEY);
|
||||||
|
|
||||||
|
|
@ -776,6 +786,12 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
alter table CCM_CORE.CCM_ROLES
|
alter table CCM_CORE.CCM_ROLES
|
||||||
add constraint UK_rfmsjqsq6kagolsod3ufkugll unique (UUID);
|
add constraint UK_rfmsjqsq6kagolsod3ufkugll unique (UUID);
|
||||||
|
|
||||||
|
alter table CCM_CORE.DOMAIN_OWNERSHIPS
|
||||||
|
add constraint UK_j86gai9740v9hshascbsboudb unique (UUID);
|
||||||
|
|
||||||
|
alter table CCM_CORE.GROUP_MEMBERSHIPS
|
||||||
|
add constraint UK_kkdoia60bmiwhhdru169p3n9g unique (UUID);
|
||||||
|
|
||||||
alter table CCM_CORE.HOSTS
|
alter table CCM_CORE.HOSTS
|
||||||
add constraint UK9ramlv6uxwt13v0wj7q0tucsx unique (SERVER_NAME, SERVER_PORT);
|
add constraint UK9ramlv6uxwt13v0wj7q0tucsx unique (SERVER_NAME, SERVER_PORT);
|
||||||
|
|
||||||
|
|
@ -785,15 +801,30 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
alter table CCM_CORE.PARTIES
|
alter table CCM_CORE.PARTIES
|
||||||
add constraint UK_1hv061qace2mn4loroe3fwdel unique (UUID);
|
add constraint UK_1hv061qace2mn4loroe3fwdel unique (UUID);
|
||||||
|
|
||||||
|
alter table CCM_CORE.PERMISSIONS
|
||||||
|
add constraint UK_p50se7rdexv7xnkiqsl6ijyti unique (UUID);
|
||||||
|
|
||||||
|
alter table CCM_CORE.RESOURCE_TYPES
|
||||||
|
add constraint UK_ioax2ix2xmq3nw7el5k6orggb unique (UUID);
|
||||||
|
|
||||||
|
alter table CCM_CORE.ROLE_MEMBERSHIPS
|
||||||
|
add constraint UK_82wdq214bfs99eii71fp50s97 unique (UUID);
|
||||||
|
|
||||||
alter table CCM_CORE.SETTINGS
|
alter table CCM_CORE.SETTINGS
|
||||||
add constraint UK5whinfxdaepqs09e5ia9y71uk unique (CONFIGURATION_CLASS, NAME);
|
add constraint UK5whinfxdaepqs09e5ia9y71uk unique (CONFIGURATION_CLASS, NAME);
|
||||||
|
|
||||||
alter table CCM_CORE.SITES
|
alter table CCM_CORE.SITES
|
||||||
add constraint UK_kou1h4y4st2m173he44yy8grx unique (DOMAIN_OF_SITE);
|
add constraint UK_kou1h4y4st2m173he44yy8grx unique (DOMAIN_OF_SITE);
|
||||||
|
|
||||||
|
alter table CCM_CORE.WORKFLOW_TASK_ASSIGNMENTS
|
||||||
|
add constraint UK_gv93k167pe9qy3go9vjau1q2t unique (UUID);
|
||||||
|
|
||||||
alter table CCM_CORE.WORKFLOW_TASK_COMMENTS
|
alter table CCM_CORE.WORKFLOW_TASK_COMMENTS
|
||||||
add constraint UK_4nnedf08odyjxalfkg16fmjoi unique (UUID);
|
add constraint UK_4nnedf08odyjxalfkg16fmjoi unique (UUID);
|
||||||
|
|
||||||
|
alter table CCM_CORE.WORKFLOW_TASK_DEPENDENCIES
|
||||||
|
add constraint UK_787va2ep8ucoul29qgsoaxnub unique (uuid);
|
||||||
|
|
||||||
alter table CCM_CORE.WORKFLOW_TASKS
|
alter table CCM_CORE.WORKFLOW_TASKS
|
||||||
add constraint UK_2u6ruatxij8wfojl8a1eigqqd unique (UUID);
|
add constraint UK_2u6ruatxij8wfojl8a1eigqqd unique (UUID);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@ drop schema if exists CCM_CORE cascade;
|
||||||
|
|
||||||
drop sequence if exists HIBERNATE_SEQUENCE;
|
drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
|
|
||||||
|
create schema CCM_CORE;
|
||||||
|
|
||||||
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,
|
||||||
|
|
@ -37,6 +39,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
CATEGORY_INDEX boolean,
|
CATEGORY_INDEX boolean,
|
||||||
OBJECT_ORDER int8,
|
OBJECT_ORDER int8,
|
||||||
TYPE varchar(255),
|
TYPE varchar(255),
|
||||||
|
UUID varchar(255) not null,
|
||||||
OBJECT_ID int8,
|
OBJECT_ID int8,
|
||||||
CATEGORY_ID int8,
|
CATEGORY_ID int8,
|
||||||
primary key (CATEGORIZATION_ID)
|
primary key (CATEGORIZATION_ID)
|
||||||
|
|
@ -120,6 +123,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
CONTEXT varchar(255),
|
CONTEXT varchar(255),
|
||||||
DOMAIN_ORDER int8,
|
DOMAIN_ORDER int8,
|
||||||
OWNER_ORDER int8,
|
OWNER_ORDER int8,
|
||||||
|
UUID varchar(255) not null,
|
||||||
domain_OBJECT_ID int8 not null,
|
domain_OBJECT_ID int8 not null,
|
||||||
owner_OBJECT_ID int8 not null,
|
owner_OBJECT_ID int8 not null,
|
||||||
primary key (OWNERSHIP_ID)
|
primary key (OWNERSHIP_ID)
|
||||||
|
|
@ -294,6 +298,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
|
|
||||||
create table CCM_CORE.GROUP_MEMBERSHIPS (
|
create table CCM_CORE.GROUP_MEMBERSHIPS (
|
||||||
MEMBERSHIP_ID int8 not null,
|
MEMBERSHIP_ID int8 not null,
|
||||||
|
UUID varchar(255) not null,
|
||||||
GROUP_ID int8,
|
GROUP_ID int8,
|
||||||
MEMBER_ID int8,
|
MEMBER_ID int8,
|
||||||
primary key (MEMBERSHIP_ID)
|
primary key (MEMBERSHIP_ID)
|
||||||
|
|
@ -449,6 +454,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
CREATION_IP varchar(255),
|
CREATION_IP varchar(255),
|
||||||
GRANTED_PRIVILEGE varchar(255),
|
GRANTED_PRIVILEGE varchar(255),
|
||||||
INHERITED boolean,
|
INHERITED boolean,
|
||||||
|
UUID varchar(255) not null,
|
||||||
CREATION_USER_ID int8,
|
CREATION_USER_ID int8,
|
||||||
GRANTEE_ID int8,
|
GRANTEE_ID int8,
|
||||||
INHERITED_FROM_ID int8,
|
INHERITED_FROM_ID int8,
|
||||||
|
|
@ -507,6 +513,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
RESOURCE_TYPE_ID int8 not null,
|
RESOURCE_TYPE_ID int8 not null,
|
||||||
SINGLETON boolean,
|
SINGLETON boolean,
|
||||||
TITLE varchar(254) not null,
|
TITLE varchar(254) not null,
|
||||||
|
UUID varchar(255) not null,
|
||||||
EMBEDDED_VIEW boolean,
|
EMBEDDED_VIEW boolean,
|
||||||
FULL_PAGE_VIEW boolean,
|
FULL_PAGE_VIEW boolean,
|
||||||
WORKSPACE_APP boolean,
|
WORKSPACE_APP boolean,
|
||||||
|
|
@ -530,6 +537,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
|
|
||||||
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,
|
||||||
MEMBER_ID int8,
|
MEMBER_ID int8,
|
||||||
ROLE_ID int8,
|
ROLE_ID int8,
|
||||||
primary key (MEMBERSHIP_ID)
|
primary key (MEMBERSHIP_ID)
|
||||||
|
|
@ -540,11 +548,11 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
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_LONG int8,
|
|
||||||
SETTING_VALUE_BIG_DECIMAL numeric(19, 2),
|
|
||||||
SETTING_VALUE_BOOLEAN boolean,
|
SETTING_VALUE_BOOLEAN boolean,
|
||||||
SETTING_VALUE_DOUBLE float8,
|
SETTING_VALUE_LONG int8,
|
||||||
SETTING_VALUE_STRING varchar(1024),
|
SETTING_VALUE_STRING varchar(1024),
|
||||||
|
SETTING_VALUE_DOUBLE float8,
|
||||||
|
SETTING_VALUE_BIG_DECIMAL numeric(19, 2),
|
||||||
primary key (SETTING_ID)
|
primary key (SETTING_ID)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -705,6 +713,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
|
|
||||||
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,
|
||||||
ROLE_ID int8,
|
ROLE_ID int8,
|
||||||
TASK_ID int8,
|
TASK_ID int8,
|
||||||
primary key (TASK_ASSIGNMENT_ID)
|
primary key (TASK_ASSIGNMENT_ID)
|
||||||
|
|
@ -721,6 +730,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
|
|
||||||
create table CCM_CORE.WORKFLOW_TASK_DEPENDENCIES (
|
create table CCM_CORE.WORKFLOW_TASK_DEPENDENCIES (
|
||||||
TASK_DEPENDENCY_ID int8 not null,
|
TASK_DEPENDENCY_ID int8 not null,
|
||||||
|
uuid varchar(255) not null,
|
||||||
BLOCKED_TASK_ID int8,
|
BLOCKED_TASK_ID int8,
|
||||||
BLOCKING_TASK_ID int8,
|
BLOCKING_TASK_ID int8,
|
||||||
primary key (TASK_DEPENDENCY_ID)
|
primary key (TASK_DEPENDENCY_ID)
|
||||||
|
|
@ -761,6 +771,9 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
primary key (WORKFLOW_ID)
|
primary key (WORKFLOW_ID)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
alter table CCM_CORE.CATEGORIZATIONS
|
||||||
|
add constraint UK_da7jus3wn1tr8poyaw9btxbrc unique (UUID);
|
||||||
|
|
||||||
alter table CCM_CORE.CATEGORY_DOMAINS
|
alter table CCM_CORE.CATEGORY_DOMAINS
|
||||||
add constraint UK_mb1riernf8a88u3mwl0bgfj8y unique (DOMAIN_KEY);
|
add constraint UK_mb1riernf8a88u3mwl0bgfj8y unique (DOMAIN_KEY);
|
||||||
|
|
||||||
|
|
@ -773,6 +786,12 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
alter table CCM_CORE.CCM_ROLES
|
alter table CCM_CORE.CCM_ROLES
|
||||||
add constraint UK_rfmsjqsq6kagolsod3ufkugll unique (UUID);
|
add constraint UK_rfmsjqsq6kagolsod3ufkugll unique (UUID);
|
||||||
|
|
||||||
|
alter table CCM_CORE.DOMAIN_OWNERSHIPS
|
||||||
|
add constraint UK_j86gai9740v9hshascbsboudb unique (UUID);
|
||||||
|
|
||||||
|
alter table CCM_CORE.GROUP_MEMBERSHIPS
|
||||||
|
add constraint UK_kkdoia60bmiwhhdru169p3n9g unique (UUID);
|
||||||
|
|
||||||
alter table CCM_CORE.HOSTS
|
alter table CCM_CORE.HOSTS
|
||||||
add constraint UK9ramlv6uxwt13v0wj7q0tucsx unique (SERVER_NAME, SERVER_PORT);
|
add constraint UK9ramlv6uxwt13v0wj7q0tucsx unique (SERVER_NAME, SERVER_PORT);
|
||||||
|
|
||||||
|
|
@ -782,15 +801,30 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
alter table CCM_CORE.PARTIES
|
alter table CCM_CORE.PARTIES
|
||||||
add constraint UK_1hv061qace2mn4loroe3fwdel unique (UUID);
|
add constraint UK_1hv061qace2mn4loroe3fwdel unique (UUID);
|
||||||
|
|
||||||
|
alter table CCM_CORE.PERMISSIONS
|
||||||
|
add constraint UK_p50se7rdexv7xnkiqsl6ijyti unique (UUID);
|
||||||
|
|
||||||
|
alter table CCM_CORE.RESOURCE_TYPES
|
||||||
|
add constraint UK_ioax2ix2xmq3nw7el5k6orggb unique (UUID);
|
||||||
|
|
||||||
|
alter table CCM_CORE.ROLE_MEMBERSHIPS
|
||||||
|
add constraint UK_82wdq214bfs99eii71fp50s97 unique (UUID);
|
||||||
|
|
||||||
alter table CCM_CORE.SETTINGS
|
alter table CCM_CORE.SETTINGS
|
||||||
add constraint UK5whinfxdaepqs09e5ia9y71uk unique (CONFIGURATION_CLASS, NAME);
|
add constraint UK5whinfxdaepqs09e5ia9y71uk unique (CONFIGURATION_CLASS, NAME);
|
||||||
|
|
||||||
alter table CCM_CORE.SITES
|
alter table CCM_CORE.SITES
|
||||||
add constraint UK_kou1h4y4st2m173he44yy8grx unique (DOMAIN_OF_SITE);
|
add constraint UK_kou1h4y4st2m173he44yy8grx unique (DOMAIN_OF_SITE);
|
||||||
|
|
||||||
|
alter table CCM_CORE.WORKFLOW_TASK_ASSIGNMENTS
|
||||||
|
add constraint UK_gv93k167pe9qy3go9vjau1q2t unique (UUID);
|
||||||
|
|
||||||
alter table CCM_CORE.WORKFLOW_TASK_COMMENTS
|
alter table CCM_CORE.WORKFLOW_TASK_COMMENTS
|
||||||
add constraint UK_4nnedf08odyjxalfkg16fmjoi unique (UUID);
|
add constraint UK_4nnedf08odyjxalfkg16fmjoi unique (UUID);
|
||||||
|
|
||||||
|
alter table CCM_CORE.WORKFLOW_TASK_DEPENDENCIES
|
||||||
|
add constraint UK_787va2ep8ucoul29qgsoaxnub unique (uuid);
|
||||||
|
|
||||||
alter table CCM_CORE.WORKFLOW_TASKS
|
alter table CCM_CORE.WORKFLOW_TASKS
|
||||||
add constraint UK_2u6ruatxij8wfojl8a1eigqqd unique (UUID);
|
add constraint UK_2u6ruatxij8wfojl8a1eigqqd unique (UUID);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,25 +66,31 @@ ccm_core.groups:
|
||||||
ccm_core.group_memberships:
|
ccm_core.group_memberships:
|
||||||
# admins <-> jdoe
|
# admins <-> jdoe
|
||||||
- membership_id: -100
|
- membership_id: -100
|
||||||
|
uuid: 1f9dad0a-c51a-49e7-8720-c3c669cde67e
|
||||||
group_id: -40
|
group_id: -40
|
||||||
member_id: -10
|
member_id: -10
|
||||||
# users <-> mmuster
|
# users <-> mmuster
|
||||||
- membership_id: -200
|
- membership_id: -200
|
||||||
|
uuid: 3837b1c2-b4e4-44b9-a92f-2330d76b51df
|
||||||
group_id: -50
|
group_id: -50
|
||||||
member_id: -20
|
member_id: -20
|
||||||
# users <-> joe
|
# users <-> joe
|
||||||
- membership_id: -300
|
- membership_id: -300
|
||||||
|
uuid: cf8ffbc6-96d3-4e23-9503-4b396ea112aa
|
||||||
group_id: -50
|
group_id: -50
|
||||||
member_id: -30
|
member_id: -30
|
||||||
# editors <-> joe
|
# editors <-> joe
|
||||||
- membership_id: -400
|
- membership_id: -400
|
||||||
|
uuid: 610ad227-cc55-4a8f-b532-3a5204f9d2dd
|
||||||
group_id: -60
|
group_id: -60
|
||||||
member_id: -30
|
member_id: -30
|
||||||
# admins <-> mmuster
|
# admins <-> mmuster
|
||||||
- membership_id: -500
|
- membership_id: -500
|
||||||
|
uuid: 555657c8-e8ce-41e1-a327-f853901c8813
|
||||||
group_id: -40
|
group_id: -40
|
||||||
member_id: -20
|
member_id: -20
|
||||||
# editors <-> jdoe
|
# editors <-> jdoe
|
||||||
- membership_id: -600
|
- membership_id: -600
|
||||||
|
uuid: ed78b175-3ff3-4f34-8a5f-829e2113c593
|
||||||
group_id: -60
|
group_id: -60
|
||||||
member_id: -10
|
member_id: -10
|
||||||
|
|
@ -66,9 +66,11 @@ ccm_core.groups:
|
||||||
ccm_core.group_memberships:
|
ccm_core.group_memberships:
|
||||||
# users <-> joe
|
# users <-> joe
|
||||||
- membership_id: -300
|
- membership_id: -300
|
||||||
|
uuid: cf8ffbc6-96d3-4e23-9503-4b396ea112aa
|
||||||
group_id: -50
|
group_id: -50
|
||||||
member_id: -30
|
member_id: -30
|
||||||
# editors <-> joe
|
# editors <-> joe
|
||||||
- membership_id: -400
|
- membership_id: -400
|
||||||
|
uuid: 610ad227-cc55-4a8f-b532-3a5204f9d2dd
|
||||||
group_id: -60
|
group_id: -60
|
||||||
member_id: -30
|
member_id: -30
|
||||||
|
|
@ -66,17 +66,21 @@ ccm_core.groups:
|
||||||
ccm_core.group_memberships:
|
ccm_core.group_memberships:
|
||||||
# admins <-> jdoe
|
# admins <-> jdoe
|
||||||
- membership_id: -100
|
- membership_id: -100
|
||||||
|
uuid: 1f9dad0a-c51a-49e7-8720-c3c669cde67e
|
||||||
group_id: -40
|
group_id: -40
|
||||||
member_id: -10
|
member_id: -10
|
||||||
# users <-> mmuster
|
# users <-> mmuster
|
||||||
- membership_id: -200
|
- membership_id: -200
|
||||||
|
uuid: 3837b1c2-b4e4-44b9-a92f-2330d76b51df
|
||||||
group_id: -50
|
group_id: -50
|
||||||
member_id: -20
|
member_id: -20
|
||||||
# users <-> joe
|
# users <-> joe
|
||||||
- membership_id: -300
|
- membership_id: -300
|
||||||
|
uuid: cf8ffbc6-96d3-4e23-9503-4b396ea112aa
|
||||||
group_id: -50
|
group_id: -50
|
||||||
member_id: -30
|
member_id: -30
|
||||||
# editors <-> joe
|
# editors <-> joe
|
||||||
- membership_id: -400
|
- membership_id: -400
|
||||||
|
uuid: 610ad227-cc55-4a8f-b532-3a5204f9d2dd
|
||||||
group_id: -60
|
group_id: -60
|
||||||
member_id: -30
|
member_id: -30
|
||||||
|
|
@ -17,20 +17,24 @@ ccm_core.ccm_objects:
|
||||||
uuid: 1c31700a-f9db-4188-812f-12dba4186c75
|
uuid: 1c31700a-f9db-4188-812f-12dba4186c75
|
||||||
ccm_core.permissions:
|
ccm_core.permissions:
|
||||||
- permission_id: -30001
|
- permission_id: -30001
|
||||||
|
uuid: 0b6b8076-f88b-4111-880a-780103d06a55
|
||||||
granted_privilege: privilege1
|
granted_privilege: privilege1
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30002
|
- permission_id: -30002
|
||||||
|
uuid: 58210e1f-482c-4d69-9746-dd4d0d587491
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20001
|
object_id: -20001
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30003
|
- permission_id: -30003
|
||||||
|
uuid: 350d8860-e6b1-4788-82e5-6e579996c983
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20002
|
object_id: -20002
|
||||||
grantee_id: -10002
|
grantee_id: -10002
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30004
|
- permission_id: -30004
|
||||||
|
uuid: 94efe5ec-94f0-4ffb-a6b1-720018915fd4
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20003
|
object_id: -20003
|
||||||
grantee_id: -10002
|
grantee_id: -10002
|
||||||
|
|
|
||||||
|
|
@ -43,40 +43,48 @@ ccm_core.categories:
|
||||||
parent_category_id: -20002
|
parent_category_id: -20002
|
||||||
ccm_core.categorizations:
|
ccm_core.categorizations:
|
||||||
- categorization_id: -40001
|
- categorization_id: -40001
|
||||||
|
uuid: 3da32dd7-4f5f-4637-b87e-e431c44d5c14
|
||||||
category_id: -20003
|
category_id: -20003
|
||||||
object_id: -20004
|
object_id: -20004
|
||||||
ccm_core.permissions:
|
ccm_core.permissions:
|
||||||
- permission_id: -30001
|
- permission_id: -30001
|
||||||
|
uuid: 0b6b8076-f88b-4111-880a-780103d06a55
|
||||||
granted_privilege: privilege1
|
granted_privilege: privilege1
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30002
|
- permission_id: -30002
|
||||||
|
uuid: 58210e1f-482c-4d69-9746-dd4d0d587491
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20001
|
object_id: -20001
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30003
|
- permission_id: -30003
|
||||||
|
uuid: 350d8860-e6b1-4788-82e5-6e579996c983
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20002
|
object_id: -20002
|
||||||
grantee_id: -10002
|
grantee_id: -10002
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30004
|
- permission_id: -30004
|
||||||
|
uuid: 94efe5ec-94f0-4ffb-a6b1-720018915fd4
|
||||||
granted_privilege: privilege4
|
granted_privilege: privilege4
|
||||||
object_id: -20001
|
object_id: -20001
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30005
|
- permission_id: -30005
|
||||||
|
uuid: a5e89679-6a93-4336-a802-d7120ba1ef5a
|
||||||
granted_privilege: privilege4
|
granted_privilege: privilege4
|
||||||
object_id: -20002
|
object_id: -20002
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30006
|
- permission_id: -30006
|
||||||
|
uuid: db46a965-c6a9-490a-8dfb-28ddef1aa69a
|
||||||
granted_privilege: privilege4
|
granted_privilege: privilege4
|
||||||
object_id: -20003
|
object_id: -20003
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: true
|
inherited: true
|
||||||
inherited_from_id: -20002
|
inherited_from_id: -20002
|
||||||
- permission_id: -30007
|
- permission_id: -30007
|
||||||
|
uuid: 152bbdeb-834a-49ea-8087-44e1286ea5c2
|
||||||
granted_privilege: privilege4
|
granted_privilege: privilege4
|
||||||
object_id: -20004
|
object_id: -20004
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ ccm_core.categories:
|
||||||
parent_category_id: -20002
|
parent_category_id: -20002
|
||||||
ccm_core.categorizations:
|
ccm_core.categorizations:
|
||||||
- categorization_id: -40001
|
- categorization_id: -40001
|
||||||
|
uuid: 3da32dd7-4f5f-4637-b87e-e431c44d5c14
|
||||||
category_id: -20003
|
category_id: -20003
|
||||||
object_id: -20004
|
object_id: -20004
|
||||||
category_index: false
|
category_index: false
|
||||||
|
|
@ -50,37 +51,44 @@ ccm_core.categorizations:
|
||||||
object_order: 0
|
object_order: 0
|
||||||
ccm_core.permissions:
|
ccm_core.permissions:
|
||||||
- permission_id: -30001
|
- permission_id: -30001
|
||||||
|
uuid: 0b6b8076-f88b-4111-880a-780103d06a55
|
||||||
granted_privilege: privilege1
|
granted_privilege: privilege1
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30002
|
- permission_id: -30002
|
||||||
|
uuid: 58210e1f-482c-4d69-9746-dd4d0d587491
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20001
|
object_id: -20001
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30003
|
- permission_id: -30003
|
||||||
|
uuid: 350d8860-e6b1-4788-82e5-6e579996c983
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20002
|
object_id: -20002
|
||||||
grantee_id: -10002
|
grantee_id: -10002
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30004
|
- permission_id: -30004
|
||||||
|
uuid: 94efe5ec-94f0-4ffb-a6b1-720018915fd4
|
||||||
granted_privilege: privilege4
|
granted_privilege: privilege4
|
||||||
object_id: -20001
|
object_id: -20001
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30005
|
- permission_id: -30005
|
||||||
|
uuid: a5e89679-6a93-4336-a802-d7120ba1ef5a
|
||||||
granted_privilege: privilege4
|
granted_privilege: privilege4
|
||||||
object_id: -20002
|
object_id: -20002
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: true
|
inherited: true
|
||||||
inherited_from_id: -20001
|
inherited_from_id: -20001
|
||||||
- permission_id: -30006
|
- permission_id: -30006
|
||||||
|
uuid: db46a965-c6a9-490a-8dfb-28ddef1aa69a
|
||||||
granted_privilege: privilege4
|
granted_privilege: privilege4
|
||||||
object_id: -20003
|
object_id: -20003
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: true
|
inherited: true
|
||||||
inherited_from_id: -20001
|
inherited_from_id: -20001
|
||||||
- permission_id: -30007
|
- permission_id: -30007
|
||||||
|
uuid: 152bbdeb-834a-49ea-8087-44e1286ea5c2
|
||||||
granted_privilege: privilege4
|
granted_privilege: privilege4
|
||||||
object_id: -20004
|
object_id: -20004
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
|
|
|
||||||
|
|
@ -17,21 +17,26 @@ ccm_core.ccm_objects:
|
||||||
uuid: 1c31700a-f9db-4188-812f-12dba4186c75
|
uuid: 1c31700a-f9db-4188-812f-12dba4186c75
|
||||||
ccm_core.permissions:
|
ccm_core.permissions:
|
||||||
- permission_id: -30001
|
- permission_id: -30001
|
||||||
|
uuid: 0b6b8076-f88b-4111-880a-780103d06a55
|
||||||
granted_privilege: privilege1
|
granted_privilege: privilege1
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
- permission_id: -30002
|
- permission_id: -30002
|
||||||
|
uuid: 58210e1f-482c-4d69-9746-dd4d0d587491
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20001
|
object_id: -20001
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
- permission_id: -30003
|
- permission_id: -30003
|
||||||
|
uuid: 350d8860-e6b1-4788-82e5-6e579996c983
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20002
|
object_id: -20002
|
||||||
grantee_id: -10002
|
grantee_id: -10002
|
||||||
- permission_id: -30004
|
- permission_id: -30004
|
||||||
|
uuid: 94efe5ec-94f0-4ffb-a6b1-720018915fd4
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20003
|
object_id: -20003
|
||||||
grantee_id: -10002
|
grantee_id: -10002
|
||||||
- permission_id: -30005
|
- permission_id: -30005
|
||||||
|
uuid: 598beccb-a891-46e3-95c7-47e91d24668f
|
||||||
granted_privilege: privilege3
|
granted_privilege: privilege3
|
||||||
grantee_id: -10002
|
grantee_id: -10002
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,19 +43,23 @@ ccm_core.categories:
|
||||||
parent_category_id: -20002
|
parent_category_id: -20002
|
||||||
ccm_core.categorizations:
|
ccm_core.categorizations:
|
||||||
- categorization_id: -40001
|
- categorization_id: -40001
|
||||||
|
uuid: 3da32dd7-4f5f-4637-b87e-e431c44d5c14
|
||||||
category_id: -20003
|
category_id: -20003
|
||||||
object_id: -20004
|
object_id: -20004
|
||||||
ccm_core.permissions:
|
ccm_core.permissions:
|
||||||
- permission_id: -30001
|
- permission_id: -30001
|
||||||
|
uuid: 0b6b8076-f88b-4111-880a-780103d06a55
|
||||||
granted_privilege: privilege1
|
granted_privilege: privilege1
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30002
|
- permission_id: -30002
|
||||||
|
uuid: 58210e1f-482c-4d69-9746-dd4d0d587491
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20001
|
object_id: -20001
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30003
|
- permission_id: -30003
|
||||||
|
uuid: 350d8860-e6b1-4788-82e5-6e579996c983
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20002
|
object_id: -20002
|
||||||
grantee_id: -10002
|
grantee_id: -10002
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ ccm_core.ccm_objects:
|
||||||
uuid: 1c31700a-f9db-4188-812f-12dba4186c75
|
uuid: 1c31700a-f9db-4188-812f-12dba4186c75
|
||||||
ccm_core.permissions:
|
ccm_core.permissions:
|
||||||
- permission_id: -30003
|
- permission_id: -30003
|
||||||
|
uuid: 350d8860-e6b1-4788-82e5-6e579996c983
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20002
|
object_id: -20002
|
||||||
grantee_id: -10002
|
grantee_id: -10002
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ ccm_core.categories:
|
||||||
parent_category_id: -20002
|
parent_category_id: -20002
|
||||||
ccm_core.categorizations:
|
ccm_core.categorizations:
|
||||||
- categorization_id: -40001
|
- categorization_id: -40001
|
||||||
|
uuid: 3da32dd7-4f5f-4637-b87e-e431c44d5c14
|
||||||
category_id: -20003
|
category_id: -20003
|
||||||
object_id: -20004
|
object_id: -20004
|
||||||
category_index: false
|
category_index: false
|
||||||
|
|
@ -50,15 +51,18 @@ ccm_core.categorizations:
|
||||||
object_order: 0
|
object_order: 0
|
||||||
ccm_core.permissions:
|
ccm_core.permissions:
|
||||||
- permission_id: -30001
|
- permission_id: -30001
|
||||||
|
uuid: 0b6b8076-f88b-4111-880a-780103d06a55
|
||||||
granted_privilege: privilege1
|
granted_privilege: privilege1
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30002
|
- permission_id: -30002
|
||||||
|
uuid: 58210e1f-482c-4d69-9746-dd4d0d587491
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20001
|
object_id: -20001
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30003
|
- permission_id: -30003
|
||||||
|
uuid: 350d8860-e6b1-4788-82e5-6e579996c983
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20002
|
object_id: -20002
|
||||||
grantee_id: -10002
|
grantee_id: -10002
|
||||||
|
|
|
||||||
|
|
@ -17,15 +17,18 @@ ccm_core.ccm_objects:
|
||||||
uuid: 1c31700a-f9db-4188-812f-12dba4186c75
|
uuid: 1c31700a-f9db-4188-812f-12dba4186c75
|
||||||
ccm_core.permissions:
|
ccm_core.permissions:
|
||||||
- permission_id: -30001
|
- permission_id: -30001
|
||||||
|
uuid: 0b6b8076-f88b-4111-880a-780103d06a55
|
||||||
granted_privilege: privilege1
|
granted_privilege: privilege1
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30002
|
- permission_id: -30002
|
||||||
|
uuid: 58210e1f-482c-4d69-9746-dd4d0d587491
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20001
|
object_id: -20001
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
- permission_id: -30003
|
- permission_id: -30003
|
||||||
|
uuid: 350d8860-e6b1-4788-82e5-6e579996c983
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20002
|
object_id: -20002
|
||||||
grantee_id: -10002
|
grantee_id: -10002
|
||||||
|
|
|
||||||
|
|
@ -66,18 +66,22 @@ ccm_core.groups:
|
||||||
ccm_core.group_memberships:
|
ccm_core.group_memberships:
|
||||||
# group1 <-> mmuster
|
# group1 <-> mmuster
|
||||||
- membership_id: -1000
|
- membership_id: -1000
|
||||||
|
uuid: db6c2569-f97d-4668-b2a0-406cb9c8edd6
|
||||||
group_id: -100
|
group_id: -100
|
||||||
member_id: -20
|
member_id: -20
|
||||||
# group2 <-> jdoe
|
# group2 <-> jdoe
|
||||||
- membership_id: -1100
|
- membership_id: -1100
|
||||||
|
uuid: d82c3896-e574-49f6-b123-ed517a50f4be
|
||||||
group_id: -200
|
group_id: -200
|
||||||
member_id: -10
|
member_id: -10
|
||||||
# group3 <-> mmuster
|
# group3 <-> mmuster
|
||||||
- membership_id: -1200
|
- membership_id: -1200
|
||||||
|
uuid: 7d7395b9-48f9-4076-9a98-7fde98123bfd
|
||||||
group_id: -300
|
group_id: -300
|
||||||
member_id: -20
|
member_id: -20
|
||||||
# group3 <-> joe
|
# group3 <-> joe
|
||||||
- membership_id: -1300
|
- membership_id: -1300
|
||||||
|
uuid: 258610b3-96b0-434a-bc08-3d58ed7525e9
|
||||||
group_id: -300
|
group_id: -300
|
||||||
member_id: -30
|
member_id: -30
|
||||||
ccm_core.ccm_roles:
|
ccm_core.ccm_roles:
|
||||||
|
|
@ -93,25 +97,31 @@ ccm_core.ccm_roles:
|
||||||
ccm_core.role_memberships:
|
ccm_core.role_memberships:
|
||||||
# role1 <-> jdoe
|
# role1 <-> jdoe
|
||||||
- membership_id: -3000
|
- membership_id: -3000
|
||||||
|
uuid: 364220da-f24d-448f-aed5-633e316acc29
|
||||||
role_id: -2000
|
role_id: -2000
|
||||||
member_id: -10
|
member_id: -10
|
||||||
# role1 <-> group3
|
# role1 <-> group3
|
||||||
- membership_id: -3100
|
- membership_id: -3100
|
||||||
|
uuid: 28b9ee03-645d-4b8d-9b4e-9cc7442ffe77
|
||||||
role_id: -2000
|
role_id: -2000
|
||||||
member_id: -300
|
member_id: -300
|
||||||
# role2 <-> group1
|
# role2 <-> group1
|
||||||
- membership_id: -3200
|
- membership_id: -3200
|
||||||
|
uuid: da515fdc-560d-44fb-8f6b-8dbc37fca39d
|
||||||
role_id: -2100
|
role_id: -2100
|
||||||
member_id: -100
|
member_id: -100
|
||||||
# role3 <-> joe
|
# role3 <-> joe
|
||||||
- membership_id: -3300
|
- membership_id: -3300
|
||||||
|
uuid: 9ee86a1a-5aaf-4e8c-bfd5-77bfc846d0b5
|
||||||
role_id: -2200
|
role_id: -2200
|
||||||
member_id: -30
|
member_id: -30
|
||||||
# role1 <-> joe
|
# role1 <-> joe
|
||||||
- membership_id: -3400
|
- membership_id: -3400
|
||||||
|
uuid: 8d3e7346-afa5-44b0-ae86-aafad4a8ebdd
|
||||||
role_id: -2000
|
role_id: -2000
|
||||||
member_id: -30
|
member_id: -30
|
||||||
# role3 <-> group1
|
# role3 <-> group1
|
||||||
- membership_id: -3500
|
- membership_id: -3500
|
||||||
|
uuid: 4c5007e9-fefc-4f2d-82de-2154c48fd908
|
||||||
role_id: -2200
|
role_id: -2200
|
||||||
member_id: -100
|
member_id: -100
|
||||||
|
|
@ -66,18 +66,22 @@ ccm_core.groups:
|
||||||
ccm_core.group_memberships:
|
ccm_core.group_memberships:
|
||||||
# group1 <-> mmuster
|
# group1 <-> mmuster
|
||||||
- membership_id: -1000
|
- membership_id: -1000
|
||||||
|
uuid: db6c2569-f97d-4668-b2a0-406cb9c8edd6
|
||||||
group_id: -100
|
group_id: -100
|
||||||
member_id: -20
|
member_id: -20
|
||||||
# group2 <-> jdoe
|
# group2 <-> jdoe
|
||||||
- membership_id: -1100
|
- membership_id: -1100
|
||||||
|
uuid: d82c3896-e574-49f6-b123-ed517a50f4be
|
||||||
group_id: -200
|
group_id: -200
|
||||||
member_id: -10
|
member_id: -10
|
||||||
# group3 <-> mmuster
|
# group3 <-> mmuster
|
||||||
- membership_id: -1200
|
- membership_id: -1200
|
||||||
|
uuid: 7d7395b9-48f9-4076-9a98-7fde98123bfd
|
||||||
group_id: -300
|
group_id: -300
|
||||||
member_id: -20
|
member_id: -20
|
||||||
# group3 <-> joe
|
# group3 <-> joe
|
||||||
- membership_id: -1300
|
- membership_id: -1300
|
||||||
|
uuid: 258610b3-96b0-434a-bc08-3d58ed7525e9
|
||||||
group_id: -300
|
group_id: -300
|
||||||
member_id: -30
|
member_id: -30
|
||||||
ccm_core.ccm_roles:
|
ccm_core.ccm_roles:
|
||||||
|
|
@ -93,9 +97,11 @@ ccm_core.ccm_roles:
|
||||||
ccm_core.role_memberships:
|
ccm_core.role_memberships:
|
||||||
# role1 <-> group3
|
# role1 <-> group3
|
||||||
- membership_id: -3100
|
- membership_id: -3100
|
||||||
|
uuid: 28b9ee03-645d-4b8d-9b4e-9cc7442ffe77
|
||||||
role_id: -2000
|
role_id: -2000
|
||||||
member_id: -300
|
member_id: -300
|
||||||
# role3 <-> joe
|
# role3 <-> joe
|
||||||
- membership_id: -3300
|
- membership_id: -3300
|
||||||
|
uuid: 9ee86a1a-5aaf-4e8c-bfd5-77bfc846d0b5
|
||||||
role_id: -2200
|
role_id: -2200
|
||||||
member_id: -30
|
member_id: -30
|
||||||
|
|
@ -66,18 +66,22 @@ ccm_core.groups:
|
||||||
ccm_core.group_memberships:
|
ccm_core.group_memberships:
|
||||||
# group1 <-> mmuster
|
# group1 <-> mmuster
|
||||||
- membership_id: -1000
|
- membership_id: -1000
|
||||||
|
uuid: db6c2569-f97d-4668-b2a0-406cb9c8edd6
|
||||||
group_id: -100
|
group_id: -100
|
||||||
member_id: -20
|
member_id: -20
|
||||||
# group2 <-> jdoe
|
# group2 <-> jdoe
|
||||||
- membership_id: -1100
|
- membership_id: -1100
|
||||||
|
uuid: d82c3896-e574-49f6-b123-ed517a50f4be
|
||||||
group_id: -200
|
group_id: -200
|
||||||
member_id: -10
|
member_id: -10
|
||||||
# group3 <-> mmuster
|
# group3 <-> mmuster
|
||||||
- membership_id: -1200
|
- membership_id: -1200
|
||||||
|
uuid: 7d7395b9-48f9-4076-9a98-7fde98123bfd
|
||||||
group_id: -300
|
group_id: -300
|
||||||
member_id: -20
|
member_id: -20
|
||||||
# group3 <-> joe
|
# group3 <-> joe
|
||||||
- membership_id: -1300
|
- membership_id: -1300
|
||||||
|
uuid: 258610b3-96b0-434a-bc08-3d58ed7525e9
|
||||||
group_id: -300
|
group_id: -300
|
||||||
member_id: -30
|
member_id: -30
|
||||||
ccm_core.ccm_roles:
|
ccm_core.ccm_roles:
|
||||||
|
|
@ -93,17 +97,21 @@ ccm_core.ccm_roles:
|
||||||
ccm_core.role_memberships:
|
ccm_core.role_memberships:
|
||||||
# role1 <-> jdoe
|
# role1 <-> jdoe
|
||||||
- membership_id: -3000
|
- membership_id: -3000
|
||||||
|
uuid: 364220da-f24d-448f-aed5-633e316acc29
|
||||||
role_id: -2000
|
role_id: -2000
|
||||||
member_id: -10
|
member_id: -10
|
||||||
# role1 <-> group3
|
# role1 <-> group3
|
||||||
- membership_id: -3100
|
- membership_id: -3100
|
||||||
|
uuid: 28b9ee03-645d-4b8d-9b4e-9cc7442ffe77
|
||||||
role_id: -2000
|
role_id: -2000
|
||||||
member_id: -300
|
member_id: -300
|
||||||
# role2 <-> group1
|
# role2 <-> group1
|
||||||
- membership_id: -3200
|
- membership_id: -3200
|
||||||
|
uuid: da515fdc-560d-44fb-8f6b-8dbc37fca39d
|
||||||
role_id: -2100
|
role_id: -2100
|
||||||
member_id: -100
|
member_id: -100
|
||||||
# role3 <-> joe
|
# role3 <-> joe
|
||||||
- membership_id: -3300
|
- membership_id: -3300
|
||||||
|
uuid: 9ee86a1a-5aaf-4e8c-bfd5-77bfc846d0b5
|
||||||
role_id: -2200
|
role_id: -2200
|
||||||
member_id: -30
|
member_id: -30
|
||||||
|
|
@ -82,18 +82,22 @@ ccm_core.groups:
|
||||||
ccm_core.group_memberships:
|
ccm_core.group_memberships:
|
||||||
# group1 <-> mmuster
|
# group1 <-> mmuster
|
||||||
- membership_id: -50001
|
- membership_id: -50001
|
||||||
|
uuid: 488f36d0-f947-4fd9-b31b-98f3aa031d1f
|
||||||
group_id: -42001
|
group_id: -42001
|
||||||
member_id: -41002
|
member_id: -41002
|
||||||
# group2 <-> jdoe
|
# group2 <-> jdoe
|
||||||
- membership_id: -50002
|
- membership_id: -50002
|
||||||
|
uuid: ed169bec-cf86-4b74-9614-69fa93f9dde0
|
||||||
group_id: -42002
|
group_id: -42002
|
||||||
member_id: -41001
|
member_id: -41001
|
||||||
# group3 <-> mmuster
|
# group3 <-> mmuster
|
||||||
- membership_id: -50003
|
- membership_id: -50003
|
||||||
|
uuid: 9bde3956-c622-41d8-bad6-17074e6b2c6c
|
||||||
group_id: -42003
|
group_id: -42003
|
||||||
member_id: -41002
|
member_id: -41002
|
||||||
# group3 <-> joe
|
# group3 <-> joe
|
||||||
- membership_id: -50004
|
- membership_id: -50004
|
||||||
|
uuid: 59424686-dddd-4574-b1f3-8abee245fce4
|
||||||
group_id: -42003
|
group_id: -42003
|
||||||
member_id: -41003
|
member_id: -41003
|
||||||
ccm_core.ccm_roles:
|
ccm_core.ccm_roles:
|
||||||
|
|
@ -109,14 +113,17 @@ ccm_core.ccm_roles:
|
||||||
ccm_core.role_memberships:
|
ccm_core.role_memberships:
|
||||||
# role1 <-> group1
|
# role1 <-> group1
|
||||||
- membership_id: -60001
|
- membership_id: -60001
|
||||||
|
uuid: a0da173a-8825-4262-923f-61b0944d74e5
|
||||||
role_id: -10001
|
role_id: -10001
|
||||||
member_id: -42001
|
member_id: -42001
|
||||||
# role2 <-> jdoe
|
# role2 <-> jdoe
|
||||||
- membership_id: -60002
|
- membership_id: -60002
|
||||||
|
uuid: d4f4b611-7048-4239-9aa1-dd79e4a22980
|
||||||
role_id: -10002
|
role_id: -10002
|
||||||
member_id: -41001
|
member_id: -41001
|
||||||
# public-role <-> public-user
|
# public-role <-> public-user
|
||||||
- membership_id: -60003
|
- membership_id: -60003
|
||||||
|
uuid: 5bee29d5-11d0-4015-b91a-27199ce5190a
|
||||||
role_id: -10003
|
role_id: -10003
|
||||||
member_id: -41004
|
member_id: -41004
|
||||||
ccm_core.ccm_objects:
|
ccm_core.ccm_objects:
|
||||||
|
|
@ -132,23 +139,27 @@ ccm_core.ccm_objects:
|
||||||
ccm_core.permissions:
|
ccm_core.permissions:
|
||||||
# permission for privilege1 granted to role1
|
# permission for privilege1 granted to role1
|
||||||
- permission_id: -30001
|
- permission_id: -30001
|
||||||
|
uuid: fb5f1353-5138-4570-9143-38bd96d1481e
|
||||||
granted_privilege: privilege1
|
granted_privilege: privilege1
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
# permission for privilege2 granted on object1 to role1
|
# permission for privilege2 granted on object1 to role1
|
||||||
- permission_id: -30002
|
- permission_id: -30002
|
||||||
|
uuid: d1d06a40-3394-44d5-910d-a003215f1a7e
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20001
|
object_id: -20001
|
||||||
grantee_id: -10001
|
grantee_id: -10001
|
||||||
inherited: false
|
inherited: false
|
||||||
# permission for privilege2 granted on object2 to role2
|
# permission for privilege2 granted on object2 to role2
|
||||||
- permission_id: -30003
|
- permission_id: -30003
|
||||||
|
uuid: a714cb3d-af1e-4ee7-bd6e-2c184d629472
|
||||||
granted_privilege: privilege2
|
granted_privilege: privilege2
|
||||||
object_id: -20002
|
object_id: -20002
|
||||||
grantee_id: -10002
|
grantee_id: -10002
|
||||||
inherited: false
|
inherited: false
|
||||||
# permission for privilege3 granted on object1 to public-role
|
# permission for privilege3 granted on object1 to public-role
|
||||||
- permission_id: -30004
|
- permission_id: -30004
|
||||||
|
uuid: 4a724998-28cd-4060-a92a-a6225e7260e4
|
||||||
granted_privilege: privilege3
|
granted_privilege: privilege3
|
||||||
object_id: -20001
|
object_id: -20001
|
||||||
grantee_id: -10003
|
grantee_id: -10003
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ import org.apache.logging.log4j.Logger;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.hibernate.validator.constraints.NotBlank;
|
import org.hibernate.validator.constraints.NotBlank;
|
||||||
import org.libreccm.core.CcmObject;
|
import org.libreccm.core.CcmObject;
|
||||||
import org.libreccm.portation.Portable;
|
import org.libreccm.imexport.Exportable;
|
||||||
import org.libreccm.security.User;
|
import org.libreccm.security.User;
|
||||||
|
|
||||||
import javax.persistence.Column;
|
import javax.persistence.Column;
|
||||||
|
|
@ -33,6 +33,7 @@ import javax.persistence.Table;
|
||||||
import javax.persistence.Temporal;
|
import javax.persistence.Temporal;
|
||||||
import javax.persistence.TemporalType;
|
import javax.persistence.TemporalType;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -47,7 +48,7 @@ import java.util.Date;
|
||||||
*/
|
*/
|
||||||
@Entity
|
@Entity
|
||||||
@Table(schema = "CCM_DOCREPO", name = "RESOURCES")
|
@Table(schema = "CCM_DOCREPO", name = "RESOURCES")
|
||||||
public abstract class AbstractResource extends CcmObject implements Portable {
|
public abstract class AbstractResource extends CcmObject implements Exportable {
|
||||||
|
|
||||||
private static final Logger log = LogManager.getLogger(AbstractResource.class);
|
private static final Logger log = LogManager.getLogger(AbstractResource.class);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,16 +18,17 @@
|
||||||
*/
|
*/
|
||||||
package org.libreccm.docrepo;
|
package org.libreccm.docrepo;
|
||||||
|
|
||||||
import org.libreccm.portation.AbstractMarshaller;
|
import org.libreccm.imexport.AbstractEntityImExporter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract Marshaller class for importing and exporting the {@code
|
* Abstract Im/Exporter class for importing and exporting the {@code
|
||||||
* AbstractResource}s.
|
* AbstractResource}s.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
|
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
|
||||||
* @version created the 2/10/16
|
* @author <a href="mailto:jens.pelzetter@uni-bremen.de">Jens Pelzetter</a>
|
||||||
|
* @param <R> Type of resource
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractResourceMarshaller<R extends AbstractResource>
|
public abstract class AbstractResourceImExporter<R extends AbstractResource>
|
||||||
extends AbstractMarshaller<R> {
|
extends AbstractEntityImExporter<R> {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -21,7 +21,7 @@ package org.libreccm.docrepo;
|
||||||
|
|
||||||
import org.hibernate.validator.constraints.NotEmpty;
|
import org.hibernate.validator.constraints.NotEmpty;
|
||||||
import org.libreccm.core.Identifiable;
|
import org.libreccm.core.Identifiable;
|
||||||
import org.libreccm.portation.Portable;
|
import org.libreccm.imexport.Exportable;
|
||||||
|
|
||||||
import javax.persistence.Column;
|
import javax.persistence.Column;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
|
|
@ -46,7 +46,7 @@ import java.util.Objects;
|
||||||
*/
|
*/
|
||||||
@Entity
|
@Entity
|
||||||
@Table(schema = "CCM_DOCREPO", name = "BLOB_OBJECTS")
|
@Table(schema = "CCM_DOCREPO", name = "BLOB_OBJECTS")
|
||||||
public class BlobObject implements Identifiable, Serializable, Portable {
|
public class BlobObject implements Identifiable, Serializable, Exportable {
|
||||||
|
|
||||||
private static final long serialVersionUID = -7468014879548796218L;
|
private static final long serialVersionUID = -7468014879548796218L;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,33 +18,37 @@
|
||||||
*/
|
*/
|
||||||
package org.libreccm.docrepo;
|
package org.libreccm.docrepo;
|
||||||
|
|
||||||
import org.libreccm.portation.AbstractMarshaller;
|
import org.libreccm.imexport.AbstractEntityImExporter;
|
||||||
import org.libreccm.portation.Marshals;
|
import org.libreccm.imexport.Processes;
|
||||||
|
|
||||||
import javax.faces.bean.RequestScoped;
|
import javax.faces.bean.RequestScoped;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.transaction.Transactional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Marshaller class for importing and exporting {@code BlobObject}s from the
|
* Im/Exporter for importing and exporting {@code BlobObject}s from the
|
||||||
* system into a specified file and the other way around.
|
* system into a specified file and the other way around.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
|
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
|
||||||
* @version created the 3/16/16
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
@RequestScoped
|
@RequestScoped
|
||||||
@Marshals(BlobObject.class)
|
@Processes(BlobObject.class)
|
||||||
public class BlobObjectMarshaller extends AbstractMarshaller<BlobObject> {
|
public class BlobObjectImExporter extends AbstractEntityImExporter<BlobObject> {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private BlobObjectRepository blobObjectRepository;
|
private BlobObjectRepository blobObjectRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Class<BlobObject> getObjectClass() {
|
protected Class<BlobObject> getEntityClass() {
|
||||||
return BlobObject.class;
|
return BlobObject.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void insertIntoDb(BlobObject portableObject) {
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
blobObjectRepository.save(portableObject);
|
protected void saveImportedEntity(final BlobObject entity) {
|
||||||
|
|
||||||
|
blobObjectRepository.save(entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -19,8 +19,6 @@
|
||||||
package org.libreccm.docrepo;
|
package org.libreccm.docrepo;
|
||||||
|
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.Inheritance;
|
|
||||||
import javax.persistence.InheritanceType;
|
|
||||||
import javax.persistence.JoinColumn;
|
import javax.persistence.JoinColumn;
|
||||||
import javax.persistence.NamedQueries;
|
import javax.persistence.NamedQueries;
|
||||||
import javax.persistence.NamedQuery;
|
import javax.persistence.NamedQuery;
|
||||||
|
|
|
||||||
|
|
@ -18,33 +18,37 @@
|
||||||
*/
|
*/
|
||||||
package org.libreccm.docrepo;
|
package org.libreccm.docrepo;
|
||||||
|
|
||||||
|
import org.libreccm.imexport.AbstractEntityImExporter;
|
||||||
|
import org.libreccm.imexport.Processes;
|
||||||
|
|
||||||
import javax.enterprise.context.RequestScoped;
|
import javax.enterprise.context.RequestScoped;
|
||||||
import org.libreccm.portation.Marshals;
|
|
||||||
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.transaction.Transactional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Marshaller class for importing and exporting {@code File}s from the
|
* Im/Exporter for importing and exporting {@code File}s from the
|
||||||
* system into a specified file and the other way around.
|
* system into a specified file and the other way around.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
|
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
|
||||||
* @version created the 3/16/16
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
@RequestScoped
|
@RequestScoped
|
||||||
@Marshals(File.class)
|
@Processes(File.class)
|
||||||
public class FileMarshaller extends AbstractResourceMarshaller<File> {
|
public class FileImExporter extends AbstractEntityImExporter<File> {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private FileRepository fileRepository;
|
private FileRepository fileRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Class<File> getObjectClass() {
|
protected Class<File> getEntityClass() {
|
||||||
return File.class;
|
return File.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void insertIntoDb(File portableObject) {
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
|
protected void saveImportedEntity(final File portableObject) {
|
||||||
fileRepository.save(portableObject);
|
fileRepository.save(portableObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -18,32 +18,34 @@
|
||||||
*/
|
*/
|
||||||
package org.libreccm.docrepo;
|
package org.libreccm.docrepo;
|
||||||
|
|
||||||
import org.libreccm.portation.Marshals;
|
import org.libreccm.imexport.Processes;
|
||||||
|
|
||||||
import javax.faces.bean.RequestScoped;
|
import javax.faces.bean.RequestScoped;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.transaction.Transactional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Marshaller class for importing and exporting {@code Folder}s from the
|
* Im/Exporter for importing and exporting {@link Folder}s from the
|
||||||
* system into a specified file and the other way around.
|
* system into a specified file and the other way around.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
|
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
|
||||||
* @version created the 3/16/16
|
* @author <a href="mailto:jens.pelzetter@uni-bremen.de">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
@RequestScoped
|
@RequestScoped
|
||||||
@Marshals(Folder.class)
|
@Processes(Folder.class)
|
||||||
public class FolderMarshaller extends AbstractResourceMarshaller<Folder> {
|
public class FolderImExporter extends AbstractResourceImExporter<Folder> {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private FolderRepository folderRepository;
|
private FolderRepository folderRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Class<Folder> getObjectClass() {
|
protected Class<Folder> getEntityClass() {
|
||||||
return Folder.class;
|
return Folder.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void insertIntoDb(Folder portableObject) {
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
folderRepository.save(portableObject);
|
protected void saveImportedEntity(final Folder entity) {
|
||||||
|
folderRepository.save(entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
package org.libreccm.docrepo;
|
package org.libreccm.docrepo;
|
||||||
|
|
||||||
import org.hibernate.validator.constraints.NotBlank;
|
import org.hibernate.validator.constraints.NotBlank;
|
||||||
import org.libreccm.portation.Portable;
|
import org.libreccm.imexport.Exportable;
|
||||||
import org.libreccm.security.User;
|
import org.libreccm.security.User;
|
||||||
import org.libreccm.web.CcmApplication;
|
import org.libreccm.web.CcmApplication;
|
||||||
|
|
||||||
|
|
@ -31,6 +31,7 @@ import javax.persistence.NamedQuery;
|
||||||
import javax.persistence.OneToMany;
|
import javax.persistence.OneToMany;
|
||||||
import javax.persistence.OneToOne;
|
import javax.persistence.OneToOne;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -46,7 +47,7 @@ import java.util.List;
|
||||||
@NamedQuery(name = "DocRepo.findRepositoriesForOwner",
|
@NamedQuery(name = "DocRepo.findRepositoriesForOwner",
|
||||||
query = "SELECT r FROM Repository r WHERE r.owner = :owner")
|
query = "SELECT r FROM Repository r WHERE r.owner = :owner")
|
||||||
})
|
})
|
||||||
public class Repository extends CcmApplication implements Portable {
|
public class Repository extends CcmApplication implements Exportable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 6673243021462798036L;
|
private static final long serialVersionUID = 6673243021462798036L;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,30 +18,30 @@
|
||||||
*/
|
*/
|
||||||
package org.libreccm.docrepo;
|
package org.libreccm.docrepo;
|
||||||
|
|
||||||
import org.libreccm.portation.AbstractMarshaller;
|
import org.libreccm.imexport.AbstractEntityImExporter;
|
||||||
import org.libreccm.portation.Marshals;
|
import org.libreccm.imexport.Processes;
|
||||||
|
|
||||||
import javax.faces.bean.RequestScoped;
|
import javax.faces.bean.RequestScoped;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
|
* @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
|
||||||
* @version created the 3/16/16
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
@RequestScoped
|
@RequestScoped
|
||||||
@Marshals(Repository.class)
|
@Processes(Repository.class)
|
||||||
public class RepositoryMarshaller extends AbstractMarshaller<Repository> {
|
public class RepositoryImExporter extends AbstractEntityImExporter<Repository> {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private RepositoryRepository repositoryRepository;
|
private RepositoryRepository repositoryRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Class<Repository> getObjectClass() {
|
protected Class<Repository> getEntityClass() {
|
||||||
return Repository.class;
|
return Repository.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void insertIntoDb(Repository portableObject) {
|
protected void saveImportedEntity(final Repository portableObject) {
|
||||||
repositoryRepository.save(portableObject);
|
repositoryRepository.save(portableObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -116,7 +116,6 @@ public class ShortcutManagerTest {
|
||||||
.addPackage(org.libreccm.l10n.LocalizedString.class
|
.addPackage(org.libreccm.l10n.LocalizedString.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.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(org.libreccm.tests.categories.IntegrationTest.class
|
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,6 @@ public class ShortcutRepositoryTest {
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addPackage(org.libreccm.l10n.LocalizedString.class
|
.addPackage(org.libreccm.l10n.LocalizedString.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addClass(org.libreccm.portation.Portable.class)
|
|
||||||
.addPackage(org.libreccm.security.Permission.class.getPackage())
|
.addPackage(org.libreccm.security.Permission.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())
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<dataset>
|
<dataset>
|
||||||
<ccm_core.parties party_id="-100"
|
<ccm_core.parties party_id="-100"
|
||||||
|
uuid="5141f8b6-cade-46c1-b64a-d1556aa285ad"
|
||||||
name="public-user" />
|
name="public-user" />
|
||||||
<ccm_core.parties party_id="-110"
|
<ccm_core.parties party_id="-110"
|
||||||
|
uuid="7d98ad7e-b27c-401e-a116-217130ee5774"
|
||||||
name="jdoe" />
|
name="jdoe" />
|
||||||
|
|
||||||
<ccm_core.users party_id="-100"
|
<ccm_core.users party_id="-100"
|
||||||
|
|
@ -25,13 +27,16 @@
|
||||||
password_reset_required="false" />
|
password_reset_required="false" />
|
||||||
|
|
||||||
<ccm_core.ccm_roles role_id="-200"
|
<ccm_core.ccm_roles role_id="-200"
|
||||||
|
uuid="54a64f55-7f10-4cfb-b36d-2c1b5c2c18f5"
|
||||||
name="shortcuts-manager"/>
|
name="shortcuts-manager"/>
|
||||||
|
|
||||||
<ccm_core.role_memberships membership_id="-300"
|
<ccm_core.role_memberships membership_id="-300"
|
||||||
|
uuid="8a9c84fd-2fe2-45b6-aab4-a5aa68aba656"
|
||||||
role_id="-200"
|
role_id="-200"
|
||||||
member_id="-110" />
|
member_id="-110" />
|
||||||
|
|
||||||
<ccm_core.permissions permission_id="-400"
|
<ccm_core.permissions permission_id="-400"
|
||||||
|
uuid="b8d46b90-3014-407c-9942-4776061dd292"
|
||||||
granted_privilege="manage_shortcuts"
|
granted_privilege="manage_shortcuts"
|
||||||
grantee_id="-200"
|
grantee_id="-200"
|
||||||
inherited="false" />
|
inherited="false" />
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<dataset>
|
<dataset>
|
||||||
<ccm_core.parties party_id="-100"
|
<ccm_core.parties party_id="-100"
|
||||||
|
uuid="5141f8b6-cade-46c1-b64a-d1556aa285ad"
|
||||||
name="public-user" />
|
name="public-user" />
|
||||||
<ccm_core.parties party_id="-110"
|
<ccm_core.parties party_id="-110"
|
||||||
|
uuid="7d98ad7e-b27c-401e-a116-217130ee5774"
|
||||||
name="jdoe" />
|
name="jdoe" />
|
||||||
|
|
||||||
<ccm_core.users party_id="-100"
|
<ccm_core.users party_id="-100"
|
||||||
|
|
@ -25,13 +27,16 @@
|
||||||
password_reset_required="false" />
|
password_reset_required="false" />
|
||||||
|
|
||||||
<ccm_core.ccm_roles role_id="-200"
|
<ccm_core.ccm_roles role_id="-200"
|
||||||
|
uuid="54a64f55-7f10-4cfb-b36d-2c1b5c2c18f5"
|
||||||
name="shortcuts-manager"/>
|
name="shortcuts-manager"/>
|
||||||
|
|
||||||
<ccm_core.role_memberships membership_id="-300"
|
<ccm_core.role_memberships membership_id="-300"
|
||||||
|
uuid="8a9c84fd-2fe2-45b6-aab4-a5aa68aba656"
|
||||||
role_id="-200"
|
role_id="-200"
|
||||||
member_id="-110" />
|
member_id="-110" />
|
||||||
|
|
||||||
<ccm_core.permissions permission_id="-400"
|
<ccm_core.permissions permission_id="-400"
|
||||||
|
uuid="b8d46b90-3014-407c-9942-4776061dd292"
|
||||||
granted_privilege="manage_shortcuts"
|
granted_privilege="manage_shortcuts"
|
||||||
grantee_id="-200"
|
grantee_id="-200"
|
||||||
inherited="false" />
|
inherited="false" />
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue