diff --git a/account-ui/src/main/java/de/muehlencord/shared/account/web/presentation/ApplicationView.java b/account-ui/src/main/java/de/muehlencord/shared/account/web/presentation/ApplicationView.java index 86a0d69..5eb7ee2 100644 --- a/account-ui/src/main/java/de/muehlencord/shared/account/web/presentation/ApplicationView.java +++ b/account-ui/src/main/java/de/muehlencord/shared/account/web/presentation/ApplicationView.java @@ -6,9 +6,9 @@ import de.muehlencord.shared.jeeutil.FacesUtil; import java.io.Serializable; import java.util.List; import javax.annotation.PostConstruct; -import javax.enterprise.context.SessionScoped; +import javax.faces.bean.ManagedBean; +import javax.faces.bean.SessionScoped; import javax.inject.Inject; -import javax.inject.Named; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -16,7 +16,7 @@ import org.slf4j.LoggerFactory; * * @author Joern Muehlencord */ -@Named(value = "applicationView") +@ManagedBean (name="applicationView") @SessionScoped public class ApplicationView implements Serializable { @@ -36,7 +36,7 @@ public class ApplicationView implements Serializable { getAllApplications(); if ((applicationList != null) && (!applicationList.isEmpty())) { currentApplication = applicationList.get(0); - } + } } public List getAllApplications() { @@ -79,6 +79,21 @@ public class ApplicationView implements Serializable { FacesUtil.addGlobalInfoMessage("Info", "Application saved"); } } + + public void deleteApplication() { + if (currentApplication == null) { + FacesUtil.addGlobalErrorMessage("Error", "Need to provide data"); + } else if (currentApplication.getId() == null) { + FacesUtil.addGlobalErrorMessage("Error", "Cannot delete non persistent data"); + } else { + String applicationName = currentApplication.getApplicationName(); + applicationService.delete (currentApplication); + applicationList = null; // force reload to update view + currentApplication = null; + selectDefaultCurrentApplication(); + FacesUtil.addGlobalInfoMessage("Info", "Application "+applicationName+" deleted"); + } + } /* *** getter / setter *** */ public ApplicationEntity getCurrentApplication() { diff --git a/account-ui/src/main/java/de/muehlencord/shared/account/web/presentation/PermissionView.java b/account-ui/src/main/java/de/muehlencord/shared/account/web/presentation/PermissionView.java index ddb9234..4921a5d 100644 --- a/account-ui/src/main/java/de/muehlencord/shared/account/web/presentation/PermissionView.java +++ b/account-ui/src/main/java/de/muehlencord/shared/account/web/presentation/PermissionView.java @@ -18,12 +18,14 @@ package de.muehlencord.shared.account.web.presentation; import de.muehlencord.shared.account.business.account.boundary.ApplicationPermissionControl; import de.muehlencord.shared.account.business.account.entity.AccountException; import de.muehlencord.shared.account.business.account.entity.ApplicationPermissionEntity; +import de.muehlencord.shared.account.business.application.entity.ApplicationEntity; import de.muehlencord.shared.jeeutil.FacesUtil; import java.io.Serializable; import java.util.List; import javax.ejb.EJB; -import javax.enterprise.context.SessionScoped; -import javax.inject.Named; +import javax.faces.bean.ManagedBean; +import javax.faces.bean.ManagedProperty; +import javax.faces.bean.SessionScoped; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,23 +33,28 @@ import org.slf4j.LoggerFactory; * * @author Joern Muehlencord */ +@ManagedBean(name = "permissionView") @SessionScoped -@Named public class PermissionView implements Serializable { private static final long serialVersionUID = -1469453490360990772L; private static final Logger LOGGER = LoggerFactory.getLogger(PermissionView.class); + @ManagedProperty(value = "#{applicationView}") + private ApplicationView applicationView; + @EJB ApplicationPermissionControl applicationPermissionService; private ApplicationPermissionEntity currentPermission; public List getAppPermissions() { - return applicationPermissionService.getApplicationPermissions(); + return applicationPermissionService.getApplicationPermissions(applicationView.getCurrentApplication()); } public void saveEditPermission() throws AccountException { if (currentPermission != null) { + ApplicationEntity currentApplication = applicationView.getCurrentApplication(); + String currentApplicationName = currentApplication.getApplicationName(); String newPermissionName = currentPermission.getPermissionName(); String newPermissionDescription = currentPermission.getPermissionDescription(); if ((newPermissionName == null) || (newPermissionName.trim().length() == 0)) { @@ -56,7 +63,7 @@ public class PermissionView implements Serializable { FacesUtil.addErrorMessage("editDialogMessages", "Error", "Permission name must not be null"); } else { if (currentPermission.getId() == null) { - applicationPermissionService.create(newPermissionName, newPermissionName); + applicationPermissionService.create(currentApplicationName, newPermissionName, newPermissionName); FacesUtil.addGlobalInfoMessage("Info", "Permission " + newPermissionName + " created"); // deselectPermission(); } else { @@ -68,6 +75,14 @@ public class PermissionView implements Serializable { } } + public ApplicationEntity getCurrentApplication() { + if (applicationView.getCurrentApplication() == null) { + return null; + } else { + return applicationView.getCurrentApplication(); + } + } + public void cancelEditPermission() { this.currentPermission = null; } @@ -100,19 +115,8 @@ public class PermissionView implements Serializable { } } -// public void selectPermission() { -// this.permissionSelected = true; -// } -// -// public void deselectPermission() { -// this.permissionSelected = false; -// } - public boolean getCanEdit() { - if (!isPermissionSelected()) { - return false; - } - return true; + return isPermissionSelected(); } public boolean getCanDelete() { @@ -120,6 +124,16 @@ public class PermissionView implements Serializable { } /* *** getter / setter *** */ + /** + * required setter for managedProperty + * + * + * @param applicationView the injected applicationView + */ + public void setApplicationView(ApplicationView applicationView) { + this.applicationView = applicationView; + } + public ApplicationPermissionEntity getCurrentPermission() { return currentPermission; } @@ -132,9 +146,4 @@ public class PermissionView implements Serializable { public boolean isPermissionSelected() { return currentPermission != null; } - -// public void setPermissionSelected(boolean permissionSelected) { -// this.permissionSelected = permissionSelected; -// } - } diff --git a/account-ui/src/main/java/de/muehlencord/shared/account/web/presentation/UniqueApplicationValidator.java b/account-ui/src/main/java/de/muehlencord/shared/account/web/presentation/UniqueApplicationValidator.java index 19da8cb..7668e94 100644 --- a/account-ui/src/main/java/de/muehlencord/shared/account/web/presentation/UniqueApplicationValidator.java +++ b/account-ui/src/main/java/de/muehlencord/shared/account/web/presentation/UniqueApplicationValidator.java @@ -1,13 +1,15 @@ package de.muehlencord.shared.account.web.presentation; +import de.muehlencord.shared.account.business.application.boundary.ApplicationService; +import de.muehlencord.shared.account.business.application.entity.ApplicationEntity; import java.io.Serializable; +import javax.ejb.EJB; +import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.validator.FacesValidator; import javax.faces.validator.Validator; import javax.faces.validator.ValidatorException; -import javax.inject.Inject; -import javax.persistence.EntityManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,17 +22,27 @@ public class UniqueApplicationValidator implements Validator, Serializable { private static final long serialVersionUID = 2526409681909574670L; private static final Logger LOGGER = LoggerFactory.getLogger(UniqueApplicationValidator.class); - - @Inject - EntityManager em; + + @EJB + ApplicationService applicationService; @Override public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { - String name = (String) value; - LOGGER.info("Name = {}", name) ; + if (value == null) { + throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Application name invalid", "Application name must not be empty")); + } + if (value instanceof String) { + String applicationname = (String) value; + ApplicationEntity existingApplication = applicationService.findByApplicationName(applicationname); + if (existingApplication != null) { + throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Application name invalid", "Application already exists")); + } + LOGGER.info("Name = {}", applicationname); + } else { + throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Application name invalid", "Application name must be a string value")); + // TODO add IPRS logger - someone is trying to cheat + } + } - - - - + } diff --git a/account-ui/src/main/java/de/muehlencord/shared/account/web/presentation/UniquePermissionNameValidator.java b/account-ui/src/main/java/de/muehlencord/shared/account/web/presentation/UniquePermissionNameValidator.java new file mode 100644 index 0000000..dc18a53 --- /dev/null +++ b/account-ui/src/main/java/de/muehlencord/shared/account/web/presentation/UniquePermissionNameValidator.java @@ -0,0 +1,59 @@ +package de.muehlencord.shared.account.web.presentation; + +import de.muehlencord.shared.account.business.account.boundary.ApplicationPermissionControl; +import de.muehlencord.shared.account.business.account.entity.ApplicationPermissionEntity; +import de.muehlencord.shared.account.business.application.entity.ApplicationEntity; +import java.io.Serializable; +import javax.ejb.EJB; +import javax.faces.application.FacesMessage; +import javax.faces.component.UIComponent; +import javax.faces.context.FacesContext; +import javax.faces.validator.FacesValidator; +import javax.faces.validator.Validator; +import javax.faces.validator.ValidatorException; +import javax.inject.Inject; +import javax.persistence.EntityManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + * @author Joern Muehlencord + */ +@FacesValidator("uniquePermissionNameValidator") +public class UniquePermissionNameValidator implements Validator, Serializable { + + private static final long serialVersionUID = 2526409681909574670L; + private static final Logger LOGGER = LoggerFactory.getLogger(UniquePermissionNameValidator.class); + + @Inject + EntityManager em; + + @EJB + ApplicationPermissionControl applicationPermissionControl; + + @Override + public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { + Object applicationObj = component.getAttributes().get("application"); + if ((applicationObj != null) && (applicationObj instanceof ApplicationEntity)) { + ApplicationEntity application = (ApplicationEntity) applicationObj; + if (value == null) { + throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Permission name invalid", "Permission name must not be empty")); + } + if (value instanceof String) { + String permissionName = (String) value; + ApplicationPermissionEntity existingPermission = applicationPermissionControl.findPermissionByName(application, permissionName); + if (existingPermission != null) { + throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Permission name invalid", "Permission already exists")); + } + } else { + throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Permission name invalid", "Permission name must be a string value")); + // TODO add IPRS logger - someone is trying to cheat + } + } else { + throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Application not set", "Permission name cannot be set if application is unknown")); + } + + } + +} diff --git a/account-ui/src/main/webapp/web/account.xhtml b/account-ui/src/main/webapp/web/account.xhtml index ce0a7ba..c2c42f1 100644 --- a/account-ui/src/main/webapp/web/account.xhtml +++ b/account-ui/src/main/webapp/web/account.xhtml @@ -83,7 +83,7 @@
- diff --git a/account-ui/src/main/webapp/web/index.xhtml b/account-ui/src/main/webapp/web/index.xhtml index 2c2dbcc..a5b64af 100644 --- a/account-ui/src/main/webapp/web/index.xhtml +++ b/account-ui/src/main/webapp/web/index.xhtml @@ -23,16 +23,25 @@
-
+
-
+
+
+ + + +
+
+ + -
-
+
-
+
diff --git a/account-ui/src/main/webapp/web/permissions.xhtml b/account-ui/src/main/webapp/web/permissions.xhtml index 271c1b7..b20ef18 100644 --- a/account-ui/src/main/webapp/web/permissions.xhtml +++ b/account-ui/src/main/webapp/web/permissions.xhtml @@ -44,7 +44,7 @@
- +
@@ -66,7 +66,11 @@
- + + + + +
diff --git a/account-ui/src/main/webapp/web/roles.xhtml b/account-ui/src/main/webapp/web/roles.xhtml index 1471eb0..904570c 100644 --- a/account-ui/src/main/webapp/web/roles.xhtml +++ b/account-ui/src/main/webapp/web/roles.xhtml @@ -33,14 +33,14 @@
- +
- +
- - + +
@@ -82,7 +82,7 @@ - +
diff --git a/account/src/main/java/de/muehlencord/shared/account/business/account/boundary/ApplicationPermissionControl.java b/account/src/main/java/de/muehlencord/shared/account/business/account/boundary/ApplicationPermissionControl.java index bd1c223..94ff625 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/account/boundary/ApplicationPermissionControl.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/boundary/ApplicationPermissionControl.java @@ -2,12 +2,15 @@ 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.application.boundary.ApplicationService; +import de.muehlencord.shared.account.business.application.entity.ApplicationEntity; import java.io.Serializable; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import java.util.List; import java.util.ArrayList; +import javax.ejb.EJB; import javax.persistence.OptimisticLockException; import javax.persistence.Query; import javax.transaction.Transactional; @@ -21,11 +24,16 @@ public class ApplicationPermissionControl implements Serializable { private static final long serialVersionUID = -3761100587901739481L; + @EJB + ApplicationService applicationService; + @PersistenceContext EntityManager em; - public List getApplicationPermissions() { - List permissionList = em.createNamedQuery("ApplicationPermissionEntity.findAll").getResultList(); + public List getApplicationPermissions(ApplicationEntity application) { + Query query = em.createNamedQuery("ApplicationPermissionEntity.findAll"); + query.setParameter("application", application); + List permissionList = query.getResultList(); if (permissionList == null) { return new ArrayList<>(); } else { @@ -33,15 +41,29 @@ public class ApplicationPermissionControl implements Serializable { } } + public ApplicationPermissionEntity findPermissionByName(ApplicationEntity application, String permissionName) { + Query query = em.createNamedQuery("ApplicationPermissionEntity.findByPermissionName"); + query.setParameter("application", application); + query.setParameter("permissionName", permissionName); + List resultList = query.getResultList(); + if ((resultList == null) || (resultList.isEmpty())) { + return null; + } else { + return resultList.get(0); + } + } + @Transactional - public void create(String name, String description) { - ApplicationPermissionEntity permission = new ApplicationPermissionEntity(name, description); + public void create(String applicationName, String name, String description) { + ApplicationEntity application = applicationService.findByApplicationName(applicationName); + // TODO add error handling if not found + ApplicationPermissionEntity permission = new ApplicationPermissionEntity(application, name, description); em.persist(permission); } - + @Transactional - public void update (ApplicationPermissionEntity permission) throws AccountException { - ApplicationPermissionEntity existing = attach(permission); + public void update(ApplicationPermissionEntity permission) throws AccountException { + ApplicationPermissionEntity existing = attach(permission); em.merge(existing); } diff --git a/account/src/main/java/de/muehlencord/shared/account/business/account/boundary/ApplicationRoleControl.java b/account/src/main/java/de/muehlencord/shared/account/business/account/boundary/ApplicationRoleControl.java index c316e04..58a119d 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/account/boundary/ApplicationRoleControl.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/boundary/ApplicationRoleControl.java @@ -94,7 +94,7 @@ public class ApplicationRoleControl implements Serializable { public List getNotAssignedApplicationPermissions(ApplicationRoleEntity role) { try { List rolePermissions = getRolePermissions(role); - List allPermssions = applicationPermissionControl.getApplicationPermissions(); + List allPermssions = applicationPermissionControl.getApplicationPermissions(role.getApplication()); List missingPermissions = new ArrayList<>(); allPermssions.stream().filter((perm) -> (!rolePermissions.contains(perm))).forEachOrdered((perm) -> { diff --git a/account/src/main/java/de/muehlencord/shared/account/business/account/entity/ApplicationPermissionEntity.java b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/ApplicationPermissionEntity.java index e65357d..4c2fa33 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/account/entity/ApplicationPermissionEntity.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/ApplicationPermissionEntity.java @@ -1,136 +1,158 @@ -package de.muehlencord.shared.account.business.account.entity; - -import java.io.Serializable; -import java.util.List; -import java.util.UUID; -import javax.persistence.Basic; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.ManyToMany; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.Table; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlTransient; -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Type; - -/** - * - * @author joern.muehlencord - */ -@Entity -@Table(name = "application_permission") -@XmlRootElement -@NamedQueries({ - @NamedQuery(name = "ApplicationPermissionEntity.findAll", query = "SELECT a FROM ApplicationPermissionEntity a order by a.permissionName"), - @NamedQuery(name = "ApplicationPermissionEntity.findNotAssigned", query = "SELECT a FROM ApplicationPermissionEntity a LEFT OUTER JOIN a.applicationRoleList r WHERE r NOT IN :permissions"), - @NamedQuery(name = "ApplicationPermissionEntity.findByPermissionName", query = "SELECT a FROM ApplicationPermissionEntity a WHERE a.permissionName = :permissionName"), - @NamedQuery(name = "ApplicationPermissionEntity.findByPermissionDescription", query = "SELECT a FROM ApplicationPermissionEntity a WHERE a.permissionDescription = :permissionDescription")}) -public class ApplicationPermissionEntity implements Serializable { - - private static final long serialVersionUID = -8985982754544829534L; - - @Id - @Basic(optional = false) - @NotNull - @Column(name = "id") - @GeneratedValue(generator = "uuid2") - @GenericGenerator(name = "uuid2", strategy = "uuid2") - @Type(type = "pg-uuid") - private UUID id; - @Basic(optional = false) - @NotNull - @Size(min = 1, max = 80) - @Column(name = "permission_name") - private String permissionName; - @Basic(optional = false) - @NotNull - @Size(min = 1, max = 200) - @Column(name = "permission_description") - private String permissionDescription; - @ManyToMany(mappedBy = "applicationPermissionList") - private List applicationRoleList; - - public ApplicationPermissionEntity() { - } - - public ApplicationPermissionEntity(UUID id) { - this.id = id; - } - - public ApplicationPermissionEntity(String permissionName, String permissionDescription) { - this.id = null; - this.permissionName = permissionName; - this.permissionDescription = permissionDescription; - } - - public ApplicationPermissionEntity(UUID id, String permissionName, String permissionDescription) { - this.id = id; - this.permissionName = permissionName; - this.permissionDescription = permissionDescription; - } - - public UUID getId() { - return id; - } - - public void setId(UUID id) { - this.id = id; - } - - public String getPermissionName() { - return permissionName; - } - - public void setPermissionName(String permissionName) { - this.permissionName = permissionName; - } - - public String getPermissionDescription() { - return permissionDescription; - } - - public void setPermissionDescription(String permissionDescription) { - this.permissionDescription = permissionDescription; - } - - @XmlTransient - public List getApplicationRoleList() { - return applicationRoleList; - } - - public void setApplicationRoleList(List applicationRoleList) { - this.applicationRoleList = applicationRoleList; - } - - @Override - public int hashCode() { - int hash = 0; - hash += (id != null ? id.hashCode() : 0); - return hash; - } - - @Override - public boolean equals(Object object) { - // TODO: Warning - this method won't work in the case the id fields are not set - if (!(object instanceof ApplicationPermissionEntity)) { - return false; - } - ApplicationPermissionEntity other = (ApplicationPermissionEntity) object; - if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { - return false; - } - return true; - } - - @Override - public String toString() { - return "de.muehlencord.shared.account.entity.ApplicationPermission[ id=" + id + " ]"; - } - -} +package de.muehlencord.shared.account.business.account.entity; + +import de.muehlencord.shared.account.business.application.entity.ApplicationEntity; +import java.io.Serializable; +import java.util.List; +import java.util.UUID; +import javax.persistence.Basic; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToMany; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlTransient; +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Type; + +/** + * + * @author joern.muehlencord + */ +@Entity +@Table(name = "application_permission") +@XmlRootElement +@NamedQueries({ + @NamedQuery(name = "ApplicationPermissionEntity.findAll", query = "SELECT a FROM ApplicationPermissionEntity a WHERE a.application=:application order by a.permissionName"), + @NamedQuery(name = "ApplicationPermissionEntity.findNotAssigned", query = "SELECT a FROM ApplicationPermissionEntity a LEFT OUTER JOIN a.applicationRoles r WHERE a.application=:application AND r NOT IN :permissions"), + @NamedQuery(name = "ApplicationPermissionEntity.findByPermissionName", query = "SELECT a FROM ApplicationPermissionEntity a WHERE a.application=:application AND a.permissionName = :permissionName"), + @NamedQuery(name = "ApplicationPermissionEntity.findByPermissionDescription", query = "SELECT a FROM ApplicationPermissionEntity a WHERE a.application=:application AND a.permissionDescription = :permissionDescription")}) +public class ApplicationPermissionEntity implements Serializable { + + private static final long serialVersionUID = -8985982754544829534L; + + @Id + @Basic(optional = false) + @NotNull + @Column(name = "id") + @GeneratedValue(generator = "uuid2") + @GenericGenerator(name = "uuid2", strategy = "uuid2") + @Type(type = "pg-uuid") + private UUID id; + @Basic(optional = false) + @NotNull + @Size(min = 1, max = 80) + @Column(name = "permission_name") + private String permissionName; + @Basic(optional = false) + @NotNull + @Size(min = 1, max = 200) + @Column(name = "permission_description") + private String permissionDescription; + @JoinColumn(name = "application", referencedColumnName = "id") + @ManyToOne(optional = false) + private ApplicationEntity application; + @ManyToMany(mappedBy = "applicationPermissionList") + private List applicationRoles; + + public ApplicationPermissionEntity() { + } + + public ApplicationPermissionEntity(UUID id) { + this.id = id; + } + + public ApplicationPermissionEntity(String permissionName, String permissionDescription) { + this.id = null; + this.permissionName = permissionName; + this.permissionDescription = permissionDescription; + } + + public ApplicationPermissionEntity(ApplicationEntity application, String permissionName, String permissionDescription) { + this.id = null; + this.application = application; + this.permissionName = permissionName; + this.permissionDescription = permissionDescription; + } + + public ApplicationPermissionEntity(UUID id, ApplicationEntity application, String permissionName, String permissionDescription) { + this.id = id; + this.application = application; + this.permissionName = permissionName; + this.permissionDescription = permissionDescription; + } + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getPermissionName() { + return permissionName; + } + + public void setPermissionName(String permissionName) { + this.permissionName = permissionName; + } + + public String getPermissionDescription() { + return permissionDescription; + } + + public void setPermissionDescription(String permissionDescription) { + this.permissionDescription = permissionDescription; + } + + @XmlTransient + public List getApplicationRoles() { + return applicationRoles; + } + + public void setApplicationRoles(List applicationRoles) { + this.applicationRoles = applicationRoles; + } + + @Override + public int hashCode() { + int hash = 0; + hash += (id != null ? id.hashCode() : 0); + return hash; + } + + @Override + public boolean equals(Object object) { + // TODO: Warning - this method won't work in the case the id fields are not set + if (!(object instanceof ApplicationPermissionEntity)) { + return false; + } + ApplicationPermissionEntity other = (ApplicationPermissionEntity) object; + if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { + return false; + } + return true; + } + + @Override + public String toString() { + return "de.muehlencord.shared.account.entity.ApplicationPermission[ id=" + id + " ]"; + } + + public ApplicationEntity getApplication() { + return application; + } + + public void setApplication(ApplicationEntity application) { + this.application = application; + } + +} diff --git a/account/src/main/java/de/muehlencord/shared/account/business/application/boundary/ApplicationService.java b/account/src/main/java/de/muehlencord/shared/account/business/application/boundary/ApplicationService.java index 167f7dd..27491ec 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/application/boundary/ApplicationService.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/application/boundary/ApplicationService.java @@ -46,14 +46,14 @@ public class ApplicationService implements Serializable { ApplicationEntity returnValue = findByApplicationName(app.getApplicationName()); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Application {} created", app.getApplicationName()); - } - + } + return returnValue; } else { ApplicationEntity returnValue = em.merge(app); if (LOGGER.isDebugEnabled()) { - LOGGER.debug("Applicateion {} updated", app.getApplicationName()); - } + LOGGER.debug("Applicateion {} updated", app.getApplicationName()); + } return returnValue; } } @@ -70,4 +70,13 @@ public class ApplicationService implements Serializable { } } + @Transactional + public void delete(ApplicationEntity app) { + ApplicationEntity attachedApp = em.find(ApplicationEntity.class, app.getId()); + em.remove(attachedApp); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("Application {} deleted", app.getApplicationName()); + } + } + } diff --git a/account/src/main/java/de/muehlencord/shared/account/business/application/entity/ApplicationEntity.java b/account/src/main/java/de/muehlencord/shared/account/business/application/entity/ApplicationEntity.java index 425bafb..b5c5ef2 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/application/entity/ApplicationEntity.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/application/entity/ApplicationEntity.java @@ -1,5 +1,6 @@ package de.muehlencord.shared.account.business.application.entity; +import de.muehlencord.shared.account.business.account.entity.ApplicationPermissionEntity; import de.muehlencord.shared.account.business.account.entity.ApplicationRoleEntity; import java.io.Serializable; import java.util.List; @@ -50,6 +51,8 @@ public class ApplicationEntity implements Serializable { private String applicationName; @OneToMany(cascade = CascadeType.ALL, mappedBy = "application") private List applicationRoleEntityList; + @OneToMany(cascade = CascadeType.ALL, mappedBy = "application") + private List applicationPermissions; public ApplicationEntity() { } @@ -104,4 +107,13 @@ public class ApplicationEntity implements Serializable { return "de.muehlencord.shared.account.business.application.entity.ApplicationEntity[ id=" + id + " ]"; } + @XmlTransient + public List getApplicationPermissions() { + return applicationPermissions; + } + + public void setApplicationPermissions(List applicationPermissions) { + this.applicationPermissions = applicationPermissions; + } + }