[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) @Column(name = "NAME", nullable = false)
@NotBlank @NotBlank
@Pattern(regexp = "[\\w-.]*") // @Pattern(regexp = "[\\w-.]*")
@XmlElement(name = "name", namespace = CAT_XML_NS) @XmlElement(name = "name", namespace = CAT_XML_NS)
private String name; private String name;

View File

@ -20,9 +20,9 @@ package org.libreccm.categorization;
import com.fasterxml.jackson.annotation.ObjectIdGenerator; import com.fasterxml.jackson.annotation.ObjectIdGenerator;
import com.fasterxml.jackson.annotation.ObjectIdResolver; import com.fasterxml.jackson.annotation.ObjectIdResolver;
import org.libreccm.cdi.utils.CdiUtil;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
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>
@ -30,8 +30,6 @@ import javax.inject.Inject;
*/ */
@RequestScoped @RequestScoped
public class CategoryIdResolver implements ObjectIdResolver { public class CategoryIdResolver implements ObjectIdResolver {
@Inject
private CategoryRepository categoryRepository;
@Override @Override
public void bindItem(ObjectIdGenerator.IdKey idKey, public void bindItem(ObjectIdGenerator.IdKey idKey,
@ -43,7 +41,15 @@ public class CategoryIdResolver implements ObjectIdResolver {
@Override @Override
public Object resolveId(ObjectIdGenerator.IdKey id) { 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 @Override

View File

@ -95,7 +95,6 @@ public class CategoryRepository extends AbstractEntityRepository<Long, Category>
* *
* @return An optional either with the found item or empty * @return An optional either with the found item or empty
*/ */
@Transactional(Transactional.TxType.REQUIRED)
public Optional<Category> findByUuid(final String uuid) { public Optional<Category> findByUuid(final String uuid) {
final TypedQuery<Category> query = getEntityManager(). final TypedQuery<Category> query = getEntityManager().
createNamedQuery("Category.findByUuid", Category.class); 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.ObjectIdGenerator;
import com.fasterxml.jackson.annotation.ObjectIdResolver; import com.fasterxml.jackson.annotation.ObjectIdResolver;
import org.libreccm.cdi.utils.CdiUtil;
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 on 3/23/17 * @version created on 3/23/17
*/ */
public class GroupIdResolver implements ObjectIdResolver { public class GroupIdResolver implements ObjectIdResolver {
@Inject
private GroupRepository groupRepository;
@Override @Override
public void bindItem(final ObjectIdGenerator.IdKey id, public void bindItem(final ObjectIdGenerator.IdKey id,
@ -41,7 +38,15 @@ public class GroupIdResolver implements ObjectIdResolver {
@Override @Override
public Object resolveId(final ObjectIdGenerator.IdKey id) { 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 @Override

View File

@ -20,16 +20,13 @@ package org.libreccm.security;
import com.fasterxml.jackson.annotation.ObjectIdGenerator; import com.fasterxml.jackson.annotation.ObjectIdGenerator;
import com.fasterxml.jackson.annotation.ObjectIdResolver; import com.fasterxml.jackson.annotation.ObjectIdResolver;
import org.libreccm.cdi.utils.CdiUtil;
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 on 3/23/17 * @version created on 3/23/17
*/ */
public class PartyIdResolver implements ObjectIdResolver { public class PartyIdResolver implements ObjectIdResolver {
@Inject
private PartyRepository partyRepository;
@Override @Override
public void bindItem(final ObjectIdGenerator.IdKey id, public void bindItem(final ObjectIdGenerator.IdKey id,
@ -41,7 +38,15 @@ public class PartyIdResolver implements ObjectIdResolver {
@Override @Override
public Object resolveId(final ObjectIdGenerator.IdKey id) { 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 @Override

View File

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

View File

@ -20,16 +20,13 @@ package org.libreccm.security;
import com.fasterxml.jackson.annotation.ObjectIdGenerator; import com.fasterxml.jackson.annotation.ObjectIdGenerator;
import com.fasterxml.jackson.annotation.ObjectIdResolver; import com.fasterxml.jackson.annotation.ObjectIdResolver;
import org.libreccm.cdi.utils.CdiUtil;
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 on 3/23/17 * @version created on 3/23/17
*/ */
public class RoleIdResolver implements ObjectIdResolver { public class RoleIdResolver implements ObjectIdResolver {
@Inject
private RoleRepository roleRepository;
@Override @Override
public void bindItem(final ObjectIdGenerator.IdKey id, public void bindItem(final ObjectIdGenerator.IdKey id,
@ -41,7 +38,15 @@ public class RoleIdResolver implements ObjectIdResolver {
@Override @Override
public Object resolveId(final ObjectIdGenerator.IdKey id) { 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 @Override

View File

@ -20,9 +20,9 @@ package org.libreccm.security;
import com.fasterxml.jackson.annotation.ObjectIdGenerator; import com.fasterxml.jackson.annotation.ObjectIdGenerator;
import com.fasterxml.jackson.annotation.ObjectIdResolver; import com.fasterxml.jackson.annotation.ObjectIdResolver;
import org.libreccm.cdi.utils.CdiUtil;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
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>
@ -30,8 +30,6 @@ import javax.inject.Inject;
*/ */
@RequestScoped @RequestScoped
public class UserIdResolver implements ObjectIdResolver { public class UserIdResolver implements ObjectIdResolver {
@Inject
private UserRepository userRepository;
@Override @Override
public void bindItem(final ObjectIdGenerator.IdKey id, public void bindItem(final ObjectIdGenerator.IdKey id,
@ -43,7 +41,15 @@ public class UserIdResolver implements ObjectIdResolver {
@Override @Override
public Object resolveId(final ObjectIdGenerator.IdKey id) { 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 @Override

View File

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