[CCM][UPDATE]

- adds new import xml files, where roles are not duplicated from export
- corrects idResolver implementation of Group, User, Party, Role, and Category
- adds correct working import of Groups, Users, GroupsMemberships, Roles, RoleMemberships

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4801 8810af33-2d31-482b-a856-94f89814c4df
ccm-docs
tosmers 2017-06-23 16:54:35 +00:00
parent 7db179f090
commit 2cefc0c1d2
9 changed files with 57 additions and 26 deletions

View File

@ -164,7 +164,7 @@ public class Category extends CcmObject implements Serializable, Portable {
*/
@Column(name = "NAME", nullable = false)
@NotBlank
@Pattern(regexp = "[\\w-.]*")
// @Pattern(regexp = "[\\w-.]*")
@XmlElement(name = "name", namespace = CAT_XML_NS)
private String name;

View File

@ -20,9 +20,9 @@ package org.libreccm.categorization;
import com.fasterxml.jackson.annotation.ObjectIdGenerator;
import com.fasterxml.jackson.annotation.ObjectIdResolver;
import org.libreccm.cdi.utils.CdiUtil;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
@ -30,8 +30,6 @@ import javax.inject.Inject;
*/
@RequestScoped
public class CategoryIdResolver implements ObjectIdResolver {
@Inject
private CategoryRepository categoryRepository;
@Override
public void bindItem(ObjectIdGenerator.IdKey idKey,
@ -43,7 +41,15 @@ public class CategoryIdResolver implements ObjectIdResolver {
@Override
public Object resolveId(ObjectIdGenerator.IdKey id) {
return categoryRepository.findByUuid(id.key.toString());
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final CategoryRepository categoryRepository = cdiUtil
.findBean(CategoryRepository.class);
return categoryRepository
.findByUuid(id.key.toString())
.orElseThrow(() -> new IllegalArgumentException(String
.format("No Category with uuid %s in the database.",
id.key.toString())));
}
@Override

View File

@ -95,7 +95,6 @@ public class CategoryRepository extends AbstractEntityRepository<Long, Category>
*
* @return An optional either with the found item or empty
*/
@Transactional(Transactional.TxType.REQUIRED)
public Optional<Category> findByUuid(final String uuid) {
final TypedQuery<Category> query = getEntityManager().
createNamedQuery("Category.findByUuid", Category.class);

View File

@ -20,16 +20,13 @@ package org.libreccm.security;
import com.fasterxml.jackson.annotation.ObjectIdGenerator;
import com.fasterxml.jackson.annotation.ObjectIdResolver;
import javax.inject.Inject;
import org.libreccm.cdi.utils.CdiUtil;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
* @version created on 3/23/17
*/
public class GroupIdResolver implements ObjectIdResolver {
@Inject
private GroupRepository groupRepository;
@Override
public void bindItem(final ObjectIdGenerator.IdKey id,
@ -41,7 +38,15 @@ public class GroupIdResolver implements ObjectIdResolver {
@Override
public Object resolveId(final ObjectIdGenerator.IdKey id) {
return groupRepository.findByName(id.key.toString());
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final GroupRepository groupRepo = cdiUtil
.findBean(GroupRepository.class);
return groupRepo
.findByName(id.key.toString())
.orElseThrow(() -> new IllegalArgumentException(String
.format("No Group with name %s in the database.",
id.key.toString())));
}
@Override

View File

@ -20,16 +20,13 @@ package org.libreccm.security;
import com.fasterxml.jackson.annotation.ObjectIdGenerator;
import com.fasterxml.jackson.annotation.ObjectIdResolver;
import javax.inject.Inject;
import org.libreccm.cdi.utils.CdiUtil;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
* @version created on 3/23/17
*/
public class PartyIdResolver implements ObjectIdResolver {
@Inject
private PartyRepository partyRepository;
@Override
public void bindItem(final ObjectIdGenerator.IdKey id,
@ -41,7 +38,15 @@ public class PartyIdResolver implements ObjectIdResolver {
@Override
public Object resolveId(final ObjectIdGenerator.IdKey id) {
return partyRepository.findByName(id.key.toString());
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final PartyRepository partyRepository = cdiUtil
.findBean(PartyRepository.class);
return partyRepository
.findByName(id.key.toString())
.orElseThrow(() -> new IllegalArgumentException(String
.format("No Party with name %s in the database.",
id.key.toString())));
}
@Override

View File

@ -159,7 +159,7 @@ public class Role implements Serializable, Portable {
@Column(name = "NAME", length = 512, nullable = false)
@Field
@NotBlank
@Pattern(regexp = "[a-zA-Z0-9\\-_]*")
// @Pattern(regexp = "[a-zA-Z0-9\\-_]*")
@XmlElement(name = "name", namespace = CORE_XML_NS)
private String name;

View File

@ -20,16 +20,13 @@ package org.libreccm.security;
import com.fasterxml.jackson.annotation.ObjectIdGenerator;
import com.fasterxml.jackson.annotation.ObjectIdResolver;
import javax.inject.Inject;
import org.libreccm.cdi.utils.CdiUtil;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
* @version created on 3/23/17
*/
public class RoleIdResolver implements ObjectIdResolver {
@Inject
private RoleRepository roleRepository;
@Override
public void bindItem(final ObjectIdGenerator.IdKey id,
@ -41,7 +38,15 @@ public class RoleIdResolver implements ObjectIdResolver {
@Override
public Object resolveId(final ObjectIdGenerator.IdKey id) {
return roleRepository.findByName(id.key.toString());
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final RoleRepository roleRepository = cdiUtil
.findBean(RoleRepository.class);
return roleRepository
.findByName(id.key.toString())
.orElseThrow(() -> new IllegalArgumentException(String
.format("No Role with name %s in the database.",
id.key.toString())));
}
@Override

View File

@ -20,9 +20,9 @@ package org.libreccm.security;
import com.fasterxml.jackson.annotation.ObjectIdGenerator;
import com.fasterxml.jackson.annotation.ObjectIdResolver;
import org.libreccm.cdi.utils.CdiUtil;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
@ -30,8 +30,6 @@ import javax.inject.Inject;
*/
@RequestScoped
public class UserIdResolver implements ObjectIdResolver {
@Inject
private UserRepository userRepository;
@Override
public void bindItem(final ObjectIdGenerator.IdKey id,
@ -43,7 +41,15 @@ public class UserIdResolver implements ObjectIdResolver {
@Override
public Object resolveId(final ObjectIdGenerator.IdKey id) {
return userRepository.findByName(id.key.toString());
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final UserRepository userRepo = cdiUtil
.findBean(UserRepository.class);
return userRepo
.findByName(id.key.toString())
.orElseThrow(() -> new IllegalArgumentException(String
.format("No User with name %s in the database.",
id.key.toString())));
}
@Override

View File

@ -83,6 +83,8 @@ public class CoreDataImportTest {
"CoreDataImportTest.war")
.addPackage(org.libreccm.categorization.Category
.class.getPackage())
.addPackage(org.libreccm.cdi.utils.CdiUtil
.class.getPackage())
.addPackage(org.libreccm.core.CcmObject
.class.getPackage())
.addPackage(org.libreccm.l10n.LocalizedString
@ -127,6 +129,9 @@ public class CoreDataImportTest {
Assert.assertFalse(importHelper.importUsers());
Assert.assertFalse(importHelper.importGroups());
Assert.assertFalse(importHelper.importGroupMemberships());
Assert.assertFalse(importHelper.importRoles());
Assert.assertFalse(importHelper.importRoleMemberships());
//Assert.assertFalse(importHelper.importCategories());
}