started to add application support for roles

This commit is contained in:
2018-11-11 16:31:33 +01:00
parent ea3ebdddf5
commit d1f72db6ac
10 changed files with 169 additions and 139 deletions

View File

@ -8,6 +8,7 @@ package de.muehlencord.shared.account.business.account.boundary;
import de.muehlencord.shared.account.business.account.entity.AccountException;
import de.muehlencord.shared.account.business.account.entity.ApplicationPermissionEntity;
import de.muehlencord.shared.account.business.account.entity.ApplicationRoleEntity;
import de.muehlencord.shared.account.business.application.entity.ApplicationEntity;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@ -37,8 +38,9 @@ public class ApplicationRoleControl implements Serializable {
@PersistenceContext
EntityManager em;
public List<ApplicationRoleEntity> getAllRoles() {
public List<ApplicationRoleEntity> getAllRoles(ApplicationEntity application) {
Query query = em.createNamedQuery("ApplicationRoleEntity.findAll");
query.setParameter ("application", application);
List<ApplicationRoleEntity> roles = query.getResultList();
if (roles == null) {
@ -49,25 +51,35 @@ public class ApplicationRoleControl implements Serializable {
}
@Transactional
public void createOrUpdate(String name, String description) {
public void createOrUpdate(ApplicationEntity application, String name, String description) {
ApplicationRoleEntity role = findByName(name);
if (role == null) {
role = new ApplicationRoleEntity(name, description);
role = new ApplicationRoleEntity(application, name, description);
em.persist(role);
} else {
role.setRoleDescription(description);
em.merge(role);
}
}
public void delete(ApplicationRoleEntity permission) throws AccountException {
ApplicationRoleEntity existingPermission = attach(permission);
em.remove(existingPermission);
@Transactional
public void create(ApplicationRoleEntity role) {
em.persist(role);
}
@Transactional
public void update (ApplicationRoleEntity role) {
em.merge(role);
}
public ApplicationRoleEntity attach(ApplicationRoleEntity permission) throws AccountException {
public void delete(ApplicationRoleEntity role) throws AccountException {
ApplicationRoleEntity existingRole = attach(role);
em.remove(existingRole);
}
public ApplicationRoleEntity attach(ApplicationRoleEntity role) throws AccountException {
try {
return em.merge(permission);
return em.merge(role);
} catch (OptimisticLockException ex) {
throw new AccountException("Entity updated / deleted, please reload", true);
}

View File

@ -31,9 +31,9 @@ import org.hibernate.annotations.Type;
@Table(name = "application_role")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "ApplicationRoleEntity.findAll", query = "SELECT a FROM ApplicationRoleEntity a ORDER BY a.roleName")
, @NamedQuery(name = "ApplicationRoleEntity.findByRoleName", query = "SELECT a FROM ApplicationRoleEntity a WHERE a.roleName = :roleName")
, @NamedQuery(name = "ApplicationRoleEntity.findByRoleDescription", query = "SELECT a FROM ApplicationRoleEntity a WHERE a.roleDescription = :roleDescription")})
@NamedQuery(name = "ApplicationRoleEntity.findAll", query = "SELECT a FROM ApplicationRoleEntity a WHERE a.application = :application ORDER BY a.roleName"),
@NamedQuery(name = "ApplicationRoleEntity.findByRoleName", query = "SELECT a FROM ApplicationRoleEntity a WHERE a.application = :application AND a.roleName = :roleName"),
@NamedQuery(name = "ApplicationRoleEntity.findByRoleDescription", query = "SELECT a FROM ApplicationRoleEntity a WHERE a.application = :application AND a.roleDescription = :roleDescription")})
public class ApplicationRoleEntity implements Serializable {
@ -66,23 +66,28 @@ public class ApplicationRoleEntity implements Serializable {
private List<ApplicationPermissionEntity> applicationPermissionList;
@JoinColumn(name = "application", referencedColumnName = "id")
@ManyToOne(optional = false)
private ApplicationEntity application;
private ApplicationEntity application;
public ApplicationRoleEntity() {
}
public ApplicationRoleEntity(UUID id) {
this.id = id;
}
public ApplicationRoleEntity(String roleName, String roleDescription) {
public ApplicationRoleEntity(ApplicationEntity application) {
this.id = null;
this.application = application;
this.roleName = null;
this.roleDescription = null;
}
public ApplicationRoleEntity(ApplicationEntity application, String roleName, String roleDescription) {
this.id = null;
this.application = application;
this.roleName = roleName;
this.roleDescription = roleDescription;
}
public ApplicationRoleEntity(UUID id, String roleName, String roleDescription) {
public ApplicationRoleEntity(UUID id, ApplicationEntity application, String roleName, String roleDescription) {
this.id = id;
this.application = application;
this.roleName = roleName;
this.roleDescription = roleDescription;
}
@ -128,14 +133,14 @@ public class ApplicationRoleEntity implements Serializable {
public void setApplicationPermissionList(List<ApplicationPermissionEntity> applicationPermissionList) {
this.applicationPermissionList = applicationPermissionList;
}
public ApplicationEntity getApplication() {
return application;
}
public void setApplication(ApplicationEntity application) {
this.application = application;
}
}
@Override
public int hashCode() {