added missing transactional annotation

This commit is contained in:
2018-11-19 17:47:09 +01:00
parent 06d625013b
commit ed0892b1dc

View File

@ -1,101 +1,102 @@
package de.muehlencord.shared.account.business.application.control; package de.muehlencord.shared.account.business.application.control;
import de.muehlencord.shared.account.business.account.entity.AccountException; 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.ApplicationPermissionEntity;
import de.muehlencord.shared.account.business.application.entity.ApplicationEntity; import de.muehlencord.shared.account.business.application.entity.ApplicationEntity;
import de.muehlencord.shared.account.util.AccountPU; import de.muehlencord.shared.account.util.AccountPU;
import java.io.Serializable; import java.io.Serializable;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import java.util.List; import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
import javax.inject.Inject; import javax.inject.Inject;
import javax.persistence.OptimisticLockException; import javax.persistence.OptimisticLockException;
import javax.persistence.Query; import javax.persistence.Query;
import javax.transaction.Transactional; import javax.transaction.Transactional;
/** /**
* *
* @author Joern Muehlencord <joern at muehlencord.de> * @author Joern Muehlencord <joern at muehlencord.de>
*/ */
@Stateless @Stateless
public class ApplicationPermissionControl implements Serializable { public class ApplicationPermissionControl implements Serializable {
private static final long serialVersionUID = -3761100587901739481L; private static final long serialVersionUID = -3761100587901739481L;
@Inject @Inject
@AccountPU @AccountPU
EntityManager em; EntityManager em;
public List<ApplicationPermissionEntity> getApplicationPermissions(ApplicationEntity app) { public List<ApplicationPermissionEntity> getApplicationPermissions(ApplicationEntity app) {
Query query = em.createNamedQuery("ApplicationPermissionEntity.findAll"); Query query = em.createNamedQuery("ApplicationPermissionEntity.findAll");
query.setParameter("application", app); query.setParameter("application", app);
List<ApplicationPermissionEntity> permissionList = query.getResultList(); List<ApplicationPermissionEntity> permissionList = query.getResultList();
if (permissionList == null) { if (permissionList == null) {
return new ArrayList<>(); return new ArrayList<>();
} else { } else {
return permissionList; return permissionList;
} }
} }
public ApplicationPermissionEntity findPermissionByName(ApplicationEntity application, String permissionName) { public ApplicationPermissionEntity findPermissionByName(ApplicationEntity application, String permissionName) {
Query query = em.createNamedQuery("ApplicationPermissionEntity.findByPermissionName"); Query query = em.createNamedQuery("ApplicationPermissionEntity.findByPermissionName");
query.setParameter("application", application); query.setParameter("application", application);
query.setParameter("permissionName", permissionName); query.setParameter("permissionName", permissionName);
List<ApplicationPermissionEntity> resultList = query.getResultList(); List<ApplicationPermissionEntity> resultList = query.getResultList();
if ((resultList == null) || (resultList.isEmpty())) { if ((resultList == null) || (resultList.isEmpty())) {
return null; return null;
} else { } else {
return resultList.get(0); return resultList.get(0);
} }
} }
@Transactional @Transactional
public void create(ApplicationEntity application, String name, String description) { public void create(ApplicationEntity application, String name, String description) {
ApplicationPermissionEntity permission = new ApplicationPermissionEntity(application, name, description); ApplicationPermissionEntity permission = new ApplicationPermissionEntity(application, name, description);
em.persist(permission); em.persist(permission);
} }
@Transactional @Transactional
public void update(ApplicationPermissionEntity permission) throws AccountException { public void update(ApplicationPermissionEntity permission) throws AccountException {
ApplicationPermissionEntity existing = attach(permission); ApplicationPermissionEntity existing = attach(permission);
em.merge(existing); em.merge(existing);
} }
@Transactional @Transactional
public void createOrUpdate(ApplicationEntity application, String name, String description) { public void createOrUpdate(ApplicationEntity application, String name, String description) {
ApplicationPermissionEntity permission = findByName(application, name); ApplicationPermissionEntity permission = findByName(application, name);
if (permission == null) { if (permission == null) {
permission = new ApplicationPermissionEntity(name, description); permission = new ApplicationPermissionEntity(name, description);
em.persist(permission); em.persist(permission);
} else { } else {
permission.setPermissionDescription(description); permission.setPermissionDescription(description);
em.merge(permission); em.merge(permission);
} }
} }
public void delete(ApplicationPermissionEntity permission) throws AccountException { @Transactional
ApplicationPermissionEntity existingPermission = attach(permission); public void delete(ApplicationPermissionEntity permission) throws AccountException {
em.remove(existingPermission); ApplicationPermissionEntity existingPermission = attach(permission);
} em.remove(existingPermission);
}
public ApplicationPermissionEntity attach(ApplicationPermissionEntity permission) throws AccountException {
try { public ApplicationPermissionEntity attach(ApplicationPermissionEntity permission) throws AccountException {
return em.merge(permission); try {
} catch (OptimisticLockException ex) { return em.merge(permission);
throw new AccountException("Entity updated / deleted, please reload", true); } catch (OptimisticLockException ex) {
} throw new AccountException("Entity updated / deleted, please reload", true);
} }
}
private ApplicationPermissionEntity findByName(ApplicationEntity application, String name) {
Query query = em.createNamedQuery("ApplicationPermissionEntity.findByPermissionName"); private ApplicationPermissionEntity findByName(ApplicationEntity application, String name) {
query.setParameter("application", application); Query query = em.createNamedQuery("ApplicationPermissionEntity.findByPermissionName");
query.setParameter("permissionName", name); query.setParameter("application", application);
List<ApplicationPermissionEntity> permissions = query.getResultList(); query.setParameter("permissionName", name);
if ((permissions == null) || (permissions.isEmpty())) { List<ApplicationPermissionEntity> permissions = query.getResultList();
return null; if ((permissions == null) || (permissions.isEmpty())) {
} else { return null;
return permissions.get(0); } else {
} return permissions.get(0);
} }
} }
}