From 5cf92b57aa84f286508a8cd8eac7010e9a5893de Mon Sep 17 00:00:00 2001 From: jomu Date: Fri, 8 Apr 2016 13:42:44 +0000 Subject: [PATCH] updated datamodel, introduced UUID as primary key --- account/pom.xml | 11 +- account/sql/02_accounts.sql | 52 ++--- .../business/account/AccountControl.java | 20 +- .../account/business/mail/MailService.java | 5 +- .../shared/account/entity/AccountEntity.java | 65 +++++-- .../account/entity/AccountHistoryEntity.java | 32 ++-- .../entity/ApplicationPermissionEntity.java | 130 +++++++++++++ .../account/entity/ApplicationRoleEntity.java | 147 ++++++++++++++ .../shared/account/entity/ConfigEntity.java | 179 +++++++++--------- .../account/entity/MailTemplateEntity.java | 4 +- .../account/entity/PermissionEntity.java | 113 ----------- .../shared/account/entity/RoleEntity.java | 119 ------------ account/src/main/resources/META-INF/jboss.xml | 2 + .../main/resources/META-INF/persistence.xml | 13 ++ 14 files changed, 496 insertions(+), 396 deletions(-) create mode 100644 account/src/main/java/de/muehlencord/shared/account/entity/ApplicationPermissionEntity.java create mode 100644 account/src/main/java/de/muehlencord/shared/account/entity/ApplicationRoleEntity.java delete mode 100644 account/src/main/java/de/muehlencord/shared/account/entity/PermissionEntity.java delete mode 100644 account/src/main/java/de/muehlencord/shared/account/entity/RoleEntity.java create mode 100644 account/src/main/resources/META-INF/jboss.xml create mode 100644 account/src/main/resources/META-INF/persistence.xml diff --git a/account/pom.xml b/account/pom.xml index 586e6ee..8c58465 100644 --- a/account/pom.xml +++ b/account/pom.xml @@ -55,6 +55,11 @@ javaee-api provided + + org.hibernate + hibernate-core + provided + @@ -66,9 +71,11 @@ 2.5.1 3.1 + + **/persistence.xml + - + - diff --git a/account/sql/02_accounts.sql b/account/sql/02_accounts.sql index 67f2931..feb5652 100644 --- a/account/sql/02_accounts.sql +++ b/account/sql/02_accounts.sql @@ -12,12 +12,15 @@ DROP TABLE application_permission; CREATE TABLE application_role ( + id UUID NOT NULL, role_name varchar(80) NOT NULL, role_description varchar(200) NOT NULL, - CONSTRAINT pk_application_role_pk PRIMARY KEY (role_name) + CONSTRAINT pk_application_role_pk PRIMARY KEY (id), + CONSTRAINT uidx_application_id UNIQUE (id) ); - + CREATE TABLE account ( + id UUID NOT NULL, username varchar(32) NOT NULL, emailaddress varchar(200) NOT NULL, firstname varchar(100) NOT NULL, @@ -34,50 +37,55 @@ CREATE TABLE account ( created_by varchar(32) NOT NULL, last_updated_on timestamp with time zone NOT NULL DEFAULT (now() at time zone 'utc'), last_updated_by varchar(32) NOT NULL, - CONSTRAINT pk_account PRIMARY KEY (username) + CONSTRAINT pk_account PRIMARY KEY (id), + CONSTRAINT uidx_username UNIQUE (username) ); CREATE TABLE account_history ( - id SERIAL NOT NULL, - username varchar(32) NOT NULL, + id UUID NOT NULL, + account_id UUID NOT NULL, message varchar(200), failure_count int NOT NULL DEFAULT 0, status varchar(20) NOT NULL, -- constants needed, after action - new, init, active, blocked, inactive, marked for deletion last_updated_on timestamp with time zone NOT NULL DEFAULT (now() at time zone 'utc'), last_updated_by varchar(32) NOT NULL, CONSTRAINT pk_account_history PRIMARY KEY (id), - CONSTRAINT fk_account_history_username_fk FOREIGN KEY (username) REFERENCES account (username) + CONSTRAINT fk_account_history_username_fk FOREIGN KEY (account_id) REFERENCES account (id) ); CREATE TABLE account_role ( - username varchar(32) NOT NULL, - role_name varchar(80) NOT NULL, - CONSTRAINT pk_account_role PRIMARY KEY (username, role_name), - CONSTRAINT fk_account_role_account FOREIGN KEY (username) REFERENCES account(username), - CONSTRAINT fk_account_role_role_name FOREIGN KEY (role_name) REFERENCES application_role(role_name) + account UUID NOT NULL, + account_role UUID NOT NULL, + CONSTRAINT pk_account_role PRIMARY KEY (account, account_role), + CONSTRAINT fk_account_role_account FOREIGN KEY (account) REFERENCES account(id), + CONSTRAINT fk_account_role_role_name FOREIGN KEY (account_role) REFERENCES application_role(id) ); CREATE TABLE application_permission ( + id UUID NOT NULL, permission_name varchar(80) NOT NULL, permission_description varchar(200) NOT NULL, - CONSTRAINT application_permission_pk PRIMARY KEY (permission_name) + CONSTRAINT pk_application_permission PRIMARY KEY (id), + CONSTRAINT uidx_application_permission_name UNIQUE (permission_name) ); CREATE TABLE role_permission ( - role_name varchar(80) NOT NULL, - permission_name varchar(80) NOT NULL, - CONSTRAINT pk_role_permission_role_permission_name PRIMARY KEY (role_name, permission_name), - CONSTRAINT fk_role_permission_role_name FOREIGN KEY (role_name) REFERENCES application_role(role_name), - CONSTRAINT fk_role_permission_permission_name FOREIGN KEY (permission_name) REFERENCES application_permission(permission_name) + application_role UUID NOT NULL, + role_permission UUID NOT NULL, + CONSTRAINT pk_role_permission_role_permission_name PRIMARY KEY (application_role, role_permission), + CONSTRAINT fk_role_permission_application_role FOREIGN KEY (application_role) REFERENCES application_role(id), + CONSTRAINT fk_role_permission_role_permission FOREIGN KEY (role_permission) REFERENCES application_permission(id) ); -INSERT INTO application_permission (permission_name, permission_description) values ('test:view', 'Display test view'); +INSERT INTO application_permission (id, permission_name, permission_description) values ('dfd0f8f1-4a51-4fdc-9a1c-a942bee9b649', 'test:view', 'Display test view'); -INSERT INTO application_role (role_name, role_description) values ('Admin', 'Admin role'); -INSERT INTO application_role (role_name, role_description) values ('User', 'Standard user role'); +INSERT INTO application_role (id, role_name, role_description) values ('5cd0aca0-5466-483d-8f3e-c369f8061131','Admin', 'Admin role'); +INSERT INTO application_role (id, role_name, role_description) values ('da30060e-fd23-4016-a506-4e12e9322148', 'User', 'Standard user role'); -- INSERT INTO role_permission (role_name, permission_name) values ('Admin','test:view'); -INSERT INTO account (username, emailaddress, firstname, lastname, account_password, created_by, last_updated_by) values('admin', 'joern@muehlencord.de', 'Joern', 'Muehlencord','$shiro1$SHA-256$500000$4bHPNH9k539UjdFLgm/HOA==$T/n8skgoGSOtNw/c9ScDlXCiGrx2cZF0Esrvf6WPq6g=', 'admin','admin'); --admin/secret -INSERT INTO account_role (username, role_name) values ('admin', 'Admin'); \ No newline at end of file +INSERT INTO account (id, username, emailaddress, firstname, lastname, account_password, created_by, last_updated_by) values('ab5c8337-6872-4aea-a9b9-78ea63706b8f','admin', 'joern@muehlencord.de', 'Joern', 'Muehlencord','$shiro1$SHA-256$500000$4bHPNH9k539UjdFLgm/HOA==$T/n8skgoGSOtNw/c9ScDlXCiGrx2cZF0Esrvf6WPq6g=', 'admin','admin'); --admin/secret +INSERT INTO account_role (account, account_role) values ('ab5c8337-6872-4aea-a9b9-78ea63706b8f', '5cd0aca0-5466-483d-8f3e-c369f8061131'); + +--select uuid_generate_v4(); \ No newline at end of file diff --git a/account/src/main/java/de/muehlencord/shared/account/business/account/AccountControl.java b/account/src/main/java/de/muehlencord/shared/account/business/account/AccountControl.java index db5e168..08a150b 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/account/AccountControl.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/AccountControl.java @@ -4,7 +4,7 @@ import de.muehlencord.shared.account.business.ConfigService; import de.muehlencord.shared.account.business.mail.MailException; import de.muehlencord.shared.account.business.mail.MailService; import de.muehlencord.shared.account.entity.AccountEntity; -import de.muehlencord.shared.account.entity.RoleEntity; +import de.muehlencord.shared.account.entity.ApplicationRoleEntity; import de.muehlencord.shared.account.util.SecurityUtil; import java.util.ArrayList; import java.util.Date; @@ -50,7 +50,7 @@ public class AccountControl { StringBuilder queryBuilder = new StringBuilder(); queryBuilder.append("SELECT a FROM AccountEntity a "); if (loadRoles) { - queryBuilder.append("JOIN FETCH a.roleEntityList "); + queryBuilder.append("JOIN FETCH a.applicationRoleList "); } queryBuilder.append("WHERE a.username = :username"); Query query = em.createQuery(queryBuilder.toString()); @@ -93,21 +93,21 @@ public class AccountControl { // load Admin or User role from database String roleName = (isAdmin ? "Admin" : "User"); - Query roleQuery = em.createNamedQuery("RoleEntity.findByRoleName"); + Query roleQuery = em.createNamedQuery("ApplicationRole.findByRoleName"); roleQuery.setParameter("roleName", roleName); - RoleEntity role = (RoleEntity) roleQuery.getSingleResult(); + ApplicationRoleEntity role = (ApplicationRoleEntity) roleQuery.getSingleResult(); if (role != null) { // add new user add required role // do not request based on newUser variable; this way existing users with missing role (for whatever reason) // will be fixed automatically - if (account.getRoleEntityList() == null || account.getRoleEntityList().isEmpty()) { - account.setRoleEntityList(new ArrayList<>()); - account.getRoleEntityList().add(role); + if (account.getApplicationRoleList() == null || account.getApplicationRoleList().isEmpty()) { + account.setApplicationRoleList(new ArrayList<>()); + account.getApplicationRoleList().add(role); em.merge(account); LOGGER.info("Added role " + roleName + " to user " + account.getUsername()); - } else if (!account.getRoleEntityList().get(0).equals(role)) { + } else if (!account.getApplicationRoleList().get(0).equals(role)) { // change role from User to Admin and vice versa // user already exists, has existing role // check if existing role is different from current role and change it @@ -115,8 +115,8 @@ public class AccountControl { // he is either User or Admin // TODO add "UserRole" to every user, make this default Role configurable // TODO add AdminRole in addtion if needed - account.getRoleEntityList().remove(0); - account.getRoleEntityList().add(role); + account.getApplicationRoleList().remove(0); + account.getApplicationRoleList().add(role); em.merge(account); LOGGER.info("Switched role of user " + account.getUsername() + " to " + roleName); diff --git a/account/src/main/java/de/muehlencord/shared/account/business/mail/MailService.java b/account/src/main/java/de/muehlencord/shared/account/business/mail/MailService.java index de62554..12ef92a 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/mail/MailService.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/mail/MailService.java @@ -4,6 +4,7 @@ import de.muehlencord.shared.account.entity.AccountEntity; import java.net.MalformedURLException; import java.net.URL; import java.util.Date; +import java.util.UUID; import javax.annotation.Resource; import javax.ejb.EJB; import javax.ejb.Stateless; @@ -38,8 +39,8 @@ public class MailService { } public void sendTestHtmlEmail(String recipient) throws MailException { - Date now = new Date(); - AccountEntity account = new AccountEntity("joern.muehlencord", "joern@muehlencord.de", "Jörn", "Mühlencord", "secret", 0, "NEW", now, "admin", now, "admin"); + Date now = new Date(); + AccountEntity account = new AccountEntity(UUID.randomUUID(), "joern.muehlencord", "joern@muehlencord.de", "Jörn", "Mühlencord", "secret", 0, "NEW", false, now, "admin", now, "admin"); MailDatamodel dataModel = new MailDatamodel(account); dataModel.addParameter("url", "http://url.de"); dataModel.addParameter("resetUrl", "http://reseturl.de"); diff --git a/account/src/main/java/de/muehlencord/shared/account/entity/AccountEntity.java b/account/src/main/java/de/muehlencord/shared/account/entity/AccountEntity.java index 0eaa37b..a2424f4 100644 --- a/account/src/main/java/de/muehlencord/shared/account/entity/AccountEntity.java +++ b/account/src/main/java/de/muehlencord/shared/account/entity/AccountEntity.java @@ -3,10 +3,12 @@ package de.muehlencord.shared.account.entity; import java.io.Serializable; import java.util.Date; import java.util.List; +import java.util.UUID; import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; @@ -21,6 +23,8 @@ 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; /** * @@ -40,6 +44,9 @@ import javax.xml.bind.annotation.XmlTransient; @NamedQuery(name = "AccountEntity.findByLastFailedLogin", query = "SELECT a FROM AccountEntity a WHERE a.lastFailedLogin = :lastFailedLogin"), @NamedQuery(name = "AccountEntity.findByFailureCount", query = "SELECT a FROM AccountEntity a WHERE a.failureCount = :failureCount"), @NamedQuery(name = "AccountEntity.findByStatus", query = "SELECT a FROM AccountEntity a WHERE a.status = :status"), + @NamedQuery(name = "AccountEntity.findByPasswordResetOngoing", query = "SELECT a FROM AccountEntity a WHERE a.passwordResetOngoing = :passwordResetOngoing"), + @NamedQuery(name = "AccountEntity.findByPasswordResetValidTo", query = "SELECT a FROM AccountEntity a WHERE a.passwordResetValidTo = :passwordResetValidTo"), + @NamedQuery(name = "AccountEntity.findByPasswordResetHash", query = "SELECT a FROM AccountEntity a WHERE a.passwordResetHash = :passwordResetHash"), @NamedQuery(name = "AccountEntity.findByCreatedOn", query = "SELECT a FROM AccountEntity a WHERE a.createdOn = :createdOn"), @NamedQuery(name = "AccountEntity.findByCreatedBy", query = "SELECT a FROM AccountEntity a WHERE a.createdBy = :createdBy"), @NamedQuery(name = "AccountEntity.findByLastUpdatedOn", query = "SELECT a FROM AccountEntity a WHERE a.lastUpdatedOn = :lastUpdatedOn"), @@ -50,6 +57,13 @@ public class AccountEntity implements Serializable { @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 = 32) @Column(name = "username") private String username; @@ -119,22 +133,22 @@ public class AccountEntity implements Serializable { @Column(name = "last_updated_by") private String lastUpdatedBy; @JoinTable(name = "account_role", joinColumns = { - @JoinColumn(name = "username", referencedColumnName = "username")}, inverseJoinColumns = { - @JoinColumn(name = "role_name", referencedColumnName = "role_name")}) + @JoinColumn(name = "account", referencedColumnName = "id")}, inverseJoinColumns = { + @JoinColumn(name = "account_role", referencedColumnName = "id")}) @ManyToMany - private List roleEntityList; - @OneToMany(cascade = CascadeType.ALL, mappedBy = "username") - private List accountHistoryEntityList; + private List applicationRoleList; + @OneToMany(cascade = CascadeType.ALL, mappedBy = "accountId") + private List accountHistoryList; public AccountEntity() { - // empty constructor needed for JPA handling, do not remove } - public AccountEntity(String username) { - this.username = username; + public AccountEntity(UUID id) { + this.id = id; } - public AccountEntity(String username, String emailaddress, String firstname, String lastname, String accountPassword, int failureCount, String status, Date createdOn, String createdBy, Date lastUpdatedOn, String lastUpdatedBy) { + public AccountEntity(UUID id, String username, String emailaddress, String firstname, String lastname, String accountPassword, int failureCount, String status, boolean passwordResetOngoing, Date createdOn, String createdBy, Date lastUpdatedOn, String lastUpdatedBy) { + this.id = id; this.username = username; this.emailaddress = emailaddress; this.firstname = firstname; @@ -142,12 +156,21 @@ public class AccountEntity implements Serializable { this.accountPassword = accountPassword; this.failureCount = failureCount; this.status = status; + this.passwordResetOngoing = passwordResetOngoing; this.createdOn = createdOn; this.createdBy = createdBy; this.lastUpdatedOn = lastUpdatedOn; this.lastUpdatedBy = lastUpdatedBy; } + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + public String getUsername() { return username; } @@ -277,27 +300,27 @@ public class AccountEntity implements Serializable { } @XmlTransient - public List getRoleEntityList() { - return roleEntityList; + public List getApplicationRoleList() { + return applicationRoleList; } - public void setRoleEntityList(List roleEntityList) { - this.roleEntityList = roleEntityList; + public void setApplicationRoleList(List applicationRoleList) { + this.applicationRoleList = applicationRoleList; } @XmlTransient - public List getAccountHistoryEntityList() { - return accountHistoryEntityList; + public List getAccountHistoryList() { + return accountHistoryList; } - public void setAccountHistoryEntityList(List accountHistoryEntityList) { - this.accountHistoryEntityList = accountHistoryEntityList; + public void setAccountHistoryList(List accountHistoryList) { + this.accountHistoryList = accountHistoryList; } @Override public int hashCode() { int hash = 0; - hash += (username != null ? username.hashCode() : 0); + hash += (id != null ? id.hashCode() : 0); return hash; } @@ -308,7 +331,7 @@ public class AccountEntity implements Serializable { return false; } AccountEntity other = (AccountEntity) object; - if ((this.username == null && other.username != null) || (this.username != null && !this.username.equals(other.username))) { + if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { return false; } return true; @@ -316,7 +339,7 @@ public class AccountEntity implements Serializable { @Override public String toString() { - return "de.muehlencord.ssg.entity.AccountEntity[ username=" + username + " ]"; + return "de.muehlencord.shared.account.entity.Account[ id=" + id + " ]"; } - + } diff --git a/account/src/main/java/de/muehlencord/shared/account/entity/AccountHistoryEntity.java b/account/src/main/java/de/muehlencord/shared/account/entity/AccountHistoryEntity.java index af07350..606dca0 100644 --- a/account/src/main/java/de/muehlencord/shared/account/entity/AccountHistoryEntity.java +++ b/account/src/main/java/de/muehlencord/shared/account/entity/AccountHistoryEntity.java @@ -2,6 +2,7 @@ package de.muehlencord.shared.account.entity; import java.io.Serializable; import java.util.Date; +import java.util.UUID; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; @@ -18,6 +19,8 @@ import javax.persistence.TemporalType; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Type; /** * @@ -38,10 +41,13 @@ public class AccountHistoryEntity implements Serializable { private static final long serialVersionUID = 1L; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) + @NotNull @Column(name = "id") - private Integer id; + @GeneratedValue(generator = "uuid2") + @GenericGenerator(name = "uuid2", strategy = "uuid2") + @Type(type = "pg-uuid") + private UUID id; @Size(max = 200) @Column(name = "message") private String message; @@ -64,18 +70,18 @@ public class AccountHistoryEntity implements Serializable { @Size(min = 1, max = 32) @Column(name = "last_updated_by") private String lastUpdatedBy; - @JoinColumn(name = "username", referencedColumnName = "username") + @JoinColumn(name = "account_id", referencedColumnName = "id") @ManyToOne(optional = false) - private AccountEntity username; + private AccountEntity accountId; public AccountHistoryEntity() { } - public AccountHistoryEntity(Integer id) { + public AccountHistoryEntity(UUID id) { this.id = id; } - public AccountHistoryEntity(Integer id, int failureCount, String status, Date lastUpdatedOn, String lastUpdatedBy) { + public AccountHistoryEntity(UUID id, int failureCount, String status, Date lastUpdatedOn, String lastUpdatedBy) { this.id = id; this.failureCount = failureCount; this.status = status; @@ -83,11 +89,11 @@ public class AccountHistoryEntity implements Serializable { this.lastUpdatedBy = lastUpdatedBy; } - public Integer getId() { + public UUID getId() { return id; } - public void setId(Integer id) { + public void setId(UUID id) { this.id = id; } @@ -131,12 +137,12 @@ public class AccountHistoryEntity implements Serializable { this.lastUpdatedBy = lastUpdatedBy; } - public AccountEntity getUsername() { - return username; + public AccountEntity getAccountId() { + return accountId; } - public void setUsername(AccountEntity username) { - this.username = username; + public void setAccountId(AccountEntity accountId) { + this.accountId = accountId; } @Override @@ -161,7 +167,7 @@ public class AccountHistoryEntity implements Serializable { @Override public String toString() { - return "de.muehlencord.ssg.entity.AccountHistoryEntity[ id=" + id + " ]"; + return "de.muehlencord.shared.account.entity.AccountHistory[ id=" + id + " ]"; } } diff --git a/account/src/main/java/de/muehlencord/shared/account/entity/ApplicationPermissionEntity.java b/account/src/main/java/de/muehlencord/shared/account/entity/ApplicationPermissionEntity.java new file mode 100644 index 0000000..5485c2d --- /dev/null +++ b/account/src/main/java/de/muehlencord/shared/account/entity/ApplicationPermissionEntity.java @@ -0,0 +1,130 @@ +package de.muehlencord.shared.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.Lob; +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"), + @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(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 + " ]"; + } + +} diff --git a/account/src/main/java/de/muehlencord/shared/account/entity/ApplicationRoleEntity.java b/account/src/main/java/de/muehlencord/shared/account/entity/ApplicationRoleEntity.java new file mode 100644 index 0000000..328bc22 --- /dev/null +++ b/account/src/main/java/de/muehlencord/shared/account/entity/ApplicationRoleEntity.java @@ -0,0 +1,147 @@ +package de.muehlencord.shared.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.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.Lob; +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_role") +@XmlRootElement +@NamedQueries({ + @NamedQuery(name = "ApplicationRoleEntity.findAll", query = "SELECT a FROM ApplicationRoleEntity a"), + @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")}) +public class ApplicationRoleEntity implements Serializable { + + private static final long serialVersionUID = -8324054525780893823L; + + + @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 = "role_name") + private String roleName; + @Basic(optional = false) + @NotNull + @Size(min = 1, max = 200) + @Column(name = "role_description") + private String roleDescription; + @ManyToMany(mappedBy = "applicationRoleList") + private List accountList; + @JoinTable(name = "role_permission", joinColumns = { + @JoinColumn(name = "application_role", referencedColumnName = "id")}, inverseJoinColumns = { + @JoinColumn(name = "role_permission", referencedColumnName = "id")}) + @ManyToMany + private List applicationPermissionList; + + public ApplicationRoleEntity() { + } + + public ApplicationRoleEntity(UUID id) { + this.id = id; + } + + public ApplicationRoleEntity(UUID id, String roleName, String roleDescription) { + this.id = id; + this.roleName = roleName; + this.roleDescription = roleDescription; + } + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getRoleName() { + return roleName; + } + + public void setRoleName(String roleName) { + this.roleName = roleName; + } + + public String getRoleDescription() { + return roleDescription; + } + + public void setRoleDescription(String roleDescription) { + this.roleDescription = roleDescription; + } + + @XmlTransient + public List getAccountList() { + return accountList; + } + + public void setAccountList(List accountList) { + this.accountList = accountList; + } + + @XmlTransient + public List getApplicationPermissionList() { + return applicationPermissionList; + } + + public void setApplicationPermissionList(List applicationPermissionList) { + this.applicationPermissionList = applicationPermissionList; + } + + @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 ApplicationRoleEntity)) { + return false; + } + ApplicationRoleEntity other = (ApplicationRoleEntity) 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.ApplicationRole[ id=" + id + " ]"; + } + +} diff --git a/account/src/main/java/de/muehlencord/shared/account/entity/ConfigEntity.java b/account/src/main/java/de/muehlencord/shared/account/entity/ConfigEntity.java index 66c72b5..834a0ec 100644 --- a/account/src/main/java/de/muehlencord/shared/account/entity/ConfigEntity.java +++ b/account/src/main/java/de/muehlencord/shared/account/entity/ConfigEntity.java @@ -1,92 +1,87 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package de.muehlencord.shared.account.entity; - -import java.io.Serializable; -import javax.persistence.Basic; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -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; - -/** - * - * @author jomu - */ -@Entity -@Table(name = "config") -@XmlRootElement -@NamedQueries({ - @NamedQuery(name = "ConfigEntity.findAll", query = "SELECT c FROM ConfigEntity c"), - @NamedQuery(name = "ConfigEntity.findByConfigKey", query = "SELECT c FROM ConfigEntity c WHERE c.configKey = :configKey"), - @NamedQuery(name = "ConfigEntity.findByConfigValue", query = "SELECT c FROM ConfigEntity c WHERE c.configValue = :configValue")}) -public class ConfigEntity implements Serializable { - - private static final long serialVersionUID = 1L; - @Id - @Basic(optional = false) - @NotNull - @Size(min = 1, max = 100) - @Column(name = "config_key") - private String configKey; - @Size(max = 200) - @Column(name = "config_value") - private String configValue; - - public ConfigEntity() { - } - - public ConfigEntity(String configKey) { - this.configKey = configKey; - } - - public String getConfigKey() { - return configKey; - } - - public void setConfigKey(String configKey) { - this.configKey = configKey; - } - - public String getConfigValue() { - return configValue; - } - - public void setConfigValue(String configValue) { - this.configValue = configValue; - } - - @Override - public int hashCode() { - int hash = 0; - hash += (configKey != null ? configKey.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 ConfigEntity)) { - return false; - } - ConfigEntity other = (ConfigEntity) object; - if ((this.configKey == null && other.configKey != null) || (this.configKey != null && !this.configKey.equals(other.configKey))) { - return false; - } - return true; - } - - @Override - public String toString() { - return "de.muehlencord.ssg.entity.ConfigEntity[ configKey=" + configKey + " ]"; - } - -} +package de.muehlencord.shared.account.entity; + +import java.io.Serializable; +import javax.persistence.Basic; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +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; + +/** + * + * @author joern.muehlencord + */ +@Entity +@Table(name = "config") +@XmlRootElement +@NamedQueries({ + @NamedQuery(name = "ConfigEntity.findAll", query = "SELECT c FROM ConfigEntity c"), + @NamedQuery(name = "ConfigEntity.findByConfigKey", query = "SELECT c FROM ConfigEntity c WHERE c.configKey = :configKey"), + @NamedQuery(name = "ConfigEntity.findByConfigValue", query = "SELECT c FROM ConfigEntity c WHERE c.configValue = :configValue")}) +public class ConfigEntity implements Serializable { + + private static final long serialVersionUID = 1L; + @Id + @Basic(optional = false) + @NotNull + @Size(min = 1, max = 100) + @Column(name = "config_key") + private String configKey; + @Size(max = 200) + @Column(name = "config_value") + private String configValue; + + public ConfigEntity() { + } + + public ConfigEntity(String configKey) { + this.configKey = configKey; + } + + public String getConfigKey() { + return configKey; + } + + public void setConfigKey(String configKey) { + this.configKey = configKey; + } + + public String getConfigValue() { + return configValue; + } + + public void setConfigValue(String configValue) { + this.configValue = configValue; + } + + @Override + public int hashCode() { + int hash = 0; + hash += (configKey != null ? configKey.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 ConfigEntity)) { + return false; + } + ConfigEntity other = (ConfigEntity) object; + if ((this.configKey == null && other.configKey != null) || (this.configKey != null && !this.configKey.equals(other.configKey))) { + return false; + } + return true; + } + + @Override + public String toString() { + return "de.muehlencord.shared.account.entity.Config[ configKey=" + configKey + " ]"; + } + +} diff --git a/account/src/main/java/de/muehlencord/shared/account/entity/MailTemplateEntity.java b/account/src/main/java/de/muehlencord/shared/account/entity/MailTemplateEntity.java index cfa0106..4762a53 100644 --- a/account/src/main/java/de/muehlencord/shared/account/entity/MailTemplateEntity.java +++ b/account/src/main/java/de/muehlencord/shared/account/entity/MailTemplateEntity.java @@ -14,7 +14,7 @@ import javax.xml.bind.annotation.XmlRootElement; /** * - * @author jomu + * @author joern.muehlencord */ @Entity @Table(name = "mail_template") @@ -88,7 +88,7 @@ public class MailTemplateEntity implements Serializable { @Override public String toString() { - return "de.muehlencord.ssg.entity.MailTemplateEntity[ templateName=" + templateName + " ]"; + return "de.muehlencord.shared.account.entity.MailTemplate[ templateName=" + templateName + " ]"; } } diff --git a/account/src/main/java/de/muehlencord/shared/account/entity/PermissionEntity.java b/account/src/main/java/de/muehlencord/shared/account/entity/PermissionEntity.java deleted file mode 100644 index cce033d..0000000 --- a/account/src/main/java/de/muehlencord/shared/account/entity/PermissionEntity.java +++ /dev/null @@ -1,113 +0,0 @@ -package de.muehlencord.shared.account.entity; - -import java.io.Serializable; -import java.util.List; -import javax.persistence.Basic; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -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; - -/** - * - * @author joern.muehlencord - */ -@Entity -@Table(name = "application_permission") -@XmlRootElement -@NamedQueries({ - @NamedQuery(name = "PermissionEntity.findAll", query = "SELECT p FROM PermissionEntity p"), - @NamedQuery(name = "PermissionEntity.findByPermissionName", query = "SELECT p FROM PermissionEntity p WHERE p.permissionName = :permissionName"), - @NamedQuery(name = "PermissionEntity.findByPermissionDescription", query = "SELECT p FROM PermissionEntity p WHERE p.permissionDescription = :permissionDescription")}) -public class PermissionEntity implements Serializable { - - private static final long serialVersionUID = 1L; - @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; - @JoinTable(name = "role_permission", joinColumns = { - @JoinColumn(name = "permission_name", referencedColumnName = "permission_name")}, inverseJoinColumns = { - @JoinColumn(name = "role_name", referencedColumnName = "role_name")}) - @ManyToMany - private List roleEntityList; - - public PermissionEntity() { - } - - public PermissionEntity(String permissionName) { - this.permissionName = permissionName; - } - - public PermissionEntity(String permissionName, String permissionDescription) { - this.permissionName = permissionName; - this.permissionDescription = permissionDescription; - } - - 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 getRoleEntityList() { - return roleEntityList; - } - - public void setRoleEntityList(List roleEntityList) { - this.roleEntityList = roleEntityList; - } - - @Override - public int hashCode() { - int hash = 0; - hash += (permissionName != null ? permissionName.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 PermissionEntity)) { - return false; - } - PermissionEntity other = (PermissionEntity) object; - if ((this.permissionName == null && other.permissionName != null) || (this.permissionName != null && !this.permissionName.equals(other.permissionName))) { - return false; - } - return true; - } - - @Override - public String toString() { - return "de.muehlencord.ssg.entity.PermissionEntity[ permissionName=" + permissionName + " ]"; - } - -} diff --git a/account/src/main/java/de/muehlencord/shared/account/entity/RoleEntity.java b/account/src/main/java/de/muehlencord/shared/account/entity/RoleEntity.java deleted file mode 100644 index cd03330..0000000 --- a/account/src/main/java/de/muehlencord/shared/account/entity/RoleEntity.java +++ /dev/null @@ -1,119 +0,0 @@ -package de.muehlencord.shared.account.entity; - -import java.io.Serializable; -import java.util.List; -import javax.persistence.Basic; -import javax.persistence.Column; -import javax.persistence.Entity; -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; - -/** - * - * @author joern.muehlencord - */ -@Entity -@Table(name = "application_role") -@XmlRootElement -@NamedQueries({ - @NamedQuery(name = "RoleEntity.findAll", query = "SELECT r FROM RoleEntity r"), - @NamedQuery(name = "RoleEntity.findByRoleName", query = "SELECT r FROM RoleEntity r WHERE r.roleName = :roleName"), - @NamedQuery(name = "RoleEntity.findByRoleDescription", query = "SELECT r FROM RoleEntity r WHERE r.roleDescription = :roleDescription")}) -public class RoleEntity implements Serializable { - - private static final long serialVersionUID = 1L; - @Id - @Basic(optional = false) - @NotNull - @Size(min = 1, max = 80) - @Column(name = "role_name") - private String roleName; - @Basic(optional = false) - @NotNull - @Size(min = 1, max = 200) - @Column(name = "role_description") - private String roleDescription; - @ManyToMany(mappedBy = "roleEntityList") - private List accountEntityList; - @ManyToMany(mappedBy = "roleEntityList") - private List permissionEntityList; - - public RoleEntity() { - } - - public RoleEntity(String roleName) { - this.roleName = roleName; - } - - public RoleEntity(String roleName, String roleDescription) { - this.roleName = roleName; - this.roleDescription = roleDescription; - } - - public String getRoleName() { - return roleName; - } - - public void setRoleName(String roleName) { - this.roleName = roleName; - } - - public String getRoleDescription() { - return roleDescription; - } - - public void setRoleDescription(String roleDescription) { - this.roleDescription = roleDescription; - } - - @XmlTransient - public List getAccountEntityList() { - return accountEntityList; - } - - public void setAccountEntityList(List accountEntityList) { - this.accountEntityList = accountEntityList; - } - - @XmlTransient - public List getPermissionEntityList() { - return permissionEntityList; - } - - public void setPermissionEntityList(List permissionEntityList) { - this.permissionEntityList = permissionEntityList; - } - - @Override - public int hashCode() { - int hash = 0; - hash += (roleName != null ? roleName.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 RoleEntity)) { - return false; - } - RoleEntity other = (RoleEntity) object; - if ((this.roleName == null && other.roleName != null) || (this.roleName != null && !this.roleName.equals(other.roleName))) { - return false; - } - return true; - } - - @Override - public String toString() { - return "de.muehlencord.ssg.entity.RoleEntity[ roleName=" + roleName + " ]"; - } - -} diff --git a/account/src/main/resources/META-INF/jboss.xml b/account/src/main/resources/META-INF/jboss.xml new file mode 100644 index 0000000..5754549 --- /dev/null +++ b/account/src/main/resources/META-INF/jboss.xml @@ -0,0 +1,2 @@ + + diff --git a/account/src/main/resources/META-INF/persistence.xml b/account/src/main/resources/META-INF/persistence.xml new file mode 100644 index 0000000..ce46e97 --- /dev/null +++ b/account/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,13 @@ + + + + org.eclipse.persistence.jpa.PersistenceProvider + false + + + + + + + +