diff --git a/account/sql/account.dbm b/account/sql/account.dbm new file mode 100644 index 0000000..8b86521 --- /dev/null +++ b/account/sql/account.dbm @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/account/sql/account.sql b/account/sql/account.sql new file mode 100644 index 0000000..08f4a14 --- /dev/null +++ b/account/sql/account.sql @@ -0,0 +1,167 @@ +-- Database generated with pgModeler (PostgreSQL Database Modeler). +-- pgModeler version: 0.9.1 +-- PostgreSQL version: 10.0 +-- Project Site: pgmodeler.io +-- Model Author: Joern Muehlencord + + +-- Database creation must be done outside a multicommand file. +-- These commands were put in this file only as a convenience. +-- -- object: account_test | type: DATABASE -- +-- -- DROP DATABASE IF EXISTS account_test; +-- CREATE DATABASE account_test +-- ENCODING = 'UTF8' +-- LC_COLLATE = 'German_Germany.1252' +-- LC_CTYPE = 'German_Germany.1252'; +-- -- ddl-end -- +-- + +-- object: public.config | type: TABLE -- +-- DROP TABLE IF EXISTS public.config CASCADE; +CREATE TABLE public.config( + config_key varchar(100) NOT NULL, + config_key_group varchar(200), + config_key_account uuid, + config_value varchar(200), + CONSTRAINT config_pk PRIMARY KEY (config_key) + +); +-- ddl-end -- + +-- object: public.application_role | type: TABLE -- +-- DROP TABLE IF EXISTS public.application_role CASCADE; +CREATE TABLE public.application_role( + id uuid NOT NULL, + role_name character varying(80) NOT NULL, + role_description character varying(200) NOT NULL, + CONSTRAINT pk_application_role_pk PRIMARY KEY (id) + +); +-- ddl-end -- + +-- object: public.account | type: TABLE -- +-- DROP TABLE IF EXISTS public.account CASCADE; +CREATE TABLE public.account( + id uuid NOT NULL, + username character varying(32) NOT NULL, + emailaddress character varying(200) NOT NULL, + firstname character varying(100) NOT NULL, + lastname character varying(100) NOT NULL, + account_password character(200) NOT NULL, + last_login timestamp with time zone, + last_failed_login timestamp with time zone, + failure_count integer NOT NULL DEFAULT 0, + status character varying(10) NOT NULL DEFAULT 'NEW', + password_reset_ongoing boolean NOT NULL DEFAULT false, + password_reset_valid_to timestamp with time zone, + password_reset_hash character(200), + created_on timestamp with time zone NOT NULL DEFAULT timezone('utc'::text, now()), + created_by character varying(32) NOT NULL, + last_updated_on timestamp with time zone NOT NULL DEFAULT timezone('utc'::text, now()), + last_updated_by character varying(32) NOT NULL, + CONSTRAINT pk_account PRIMARY KEY (id), + CONSTRAINT uidx_username UNIQUE (username) + +); +-- ddl-end -- + +-- object: public.account_history | type: TABLE -- +-- DROP TABLE IF EXISTS public.account_history CASCADE; +CREATE TABLE public.account_history( + id uuid NOT NULL, + account_id uuid NOT NULL, + message character varying(200), + failure_count integer NOT NULL DEFAULT 0, + status character varying(20) NOT NULL, + last_updated_on timestamp with time zone NOT NULL DEFAULT timezone('utc'::text, now()), + last_updated_by character varying(32) NOT NULL, + CONSTRAINT pk_account_history PRIMARY KEY (id) + +); +-- ddl-end -- + +-- object: public.account_role | type: TABLE -- +-- DROP TABLE IF EXISTS public.account_role CASCADE; +CREATE TABLE public.account_role( + account uuid NOT NULL, + account_role uuid NOT NULL, + CONSTRAINT pk_account_role PRIMARY KEY (account,account_role) + +); +-- ddl-end -- + +-- object: public.application_permission | type: TABLE -- +-- DROP TABLE IF EXISTS public.application_permission CASCADE; +CREATE TABLE public.application_permission( + id uuid NOT NULL, + permission_name character varying(80) NOT NULL, + permission_description character varying(200) NOT NULL, + CONSTRAINT pk_application_permission PRIMARY KEY (id), + CONSTRAINT uidx_application_permission_name UNIQUE (permission_name) + +); +-- ddl-end -- + +-- object: public.role_permission | type: TABLE -- +-- DROP TABLE IF EXISTS public.role_permission CASCADE; +CREATE TABLE public.role_permission( + application_role uuid NOT NULL, + role_permission uuid NOT NULL, + CONSTRAINT pk_role_permission_role_permission_name PRIMARY KEY (application_role,role_permission) + +); +-- ddl-end -- + +-- object: public.mail_template | type: TABLE -- +-- DROP TABLE IF EXISTS public.mail_template CASCADE; +CREATE TABLE public.mail_template( + template_name character varying(40) NOT NULL, + template_value text NOT NULL, + CONSTRAINT mail_template_pk PRIMARY KEY (template_name) + +); +-- ddl-end -- + +-- object: config_key_account_fk | type: CONSTRAINT -- +-- ALTER TABLE public.config DROP CONSTRAINT IF EXISTS config_key_account_fk CASCADE; +ALTER TABLE public.config ADD CONSTRAINT config_key_account_fk FOREIGN KEY (config_key_account) +REFERENCES public.account (id) MATCH FULL +ON DELETE NO ACTION ON UPDATE NO ACTION; +-- ddl-end -- + +-- object: fk_account_history_username_fk | type: CONSTRAINT -- +-- ALTER TABLE public.account_history DROP CONSTRAINT IF EXISTS fk_account_history_username_fk CASCADE; +ALTER TABLE public.account_history ADD CONSTRAINT fk_account_history_username_fk FOREIGN KEY (account_id) +REFERENCES public.account (id) MATCH SIMPLE +ON DELETE NO ACTION ON UPDATE NO ACTION; +-- ddl-end -- + +-- object: fk_account_role_account | type: CONSTRAINT -- +-- ALTER TABLE public.account_role DROP CONSTRAINT IF EXISTS fk_account_role_account CASCADE; +ALTER TABLE public.account_role ADD CONSTRAINT fk_account_role_account FOREIGN KEY (account) +REFERENCES public.account (id) MATCH SIMPLE +ON DELETE NO ACTION ON UPDATE NO ACTION; +-- ddl-end -- + +-- object: fk_account_role_role_name | type: CONSTRAINT -- +-- ALTER TABLE public.account_role DROP CONSTRAINT IF EXISTS fk_account_role_role_name CASCADE; +ALTER TABLE public.account_role ADD CONSTRAINT fk_account_role_role_name FOREIGN KEY (account_role) +REFERENCES public.application_role (id) MATCH SIMPLE +ON DELETE NO ACTION ON UPDATE NO ACTION; +-- ddl-end -- + +-- object: fk_role_permission_application_role | type: CONSTRAINT -- +-- ALTER TABLE public.role_permission DROP CONSTRAINT IF EXISTS fk_role_permission_application_role CASCADE; +ALTER TABLE public.role_permission ADD CONSTRAINT fk_role_permission_application_role FOREIGN KEY (application_role) +REFERENCES public.application_role (id) MATCH SIMPLE +ON DELETE NO ACTION ON UPDATE NO ACTION; +-- ddl-end -- + +-- object: fk_role_permission_role_permission | type: CONSTRAINT -- +-- ALTER TABLE public.role_permission DROP CONSTRAINT IF EXISTS fk_role_permission_role_permission CASCADE; +ALTER TABLE public.role_permission ADD CONSTRAINT fk_role_permission_role_permission FOREIGN KEY (role_permission) +REFERENCES public.application_permission (id) MATCH SIMPLE +ON DELETE NO ACTION ON UPDATE NO ACTION; +-- ddl-end -- + + diff --git a/account/sql/account_prefill.sql b/account/sql/account_prefill.sql new file mode 100644 index 0000000..7529e81 --- /dev/null +++ b/account/sql/account_prefill.sql @@ -0,0 +1,11 @@ +-- config +INSERT INTO config (config_key, config_value) VALUES ('account.maxFailedLogins', '5'); + +-- application configuration +INSERT INTO application_permission (id, permission_name, permission_description) values ('dfd0f8f1-4a51-4fdc-9a1c-a942bee9b649', 'test:view', 'Display test view'); +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'); + +-- account +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'); diff --git a/account/sql/createDatabaseFileFromDBM.bat b/account/sql/createDatabaseFileFromDBM.bat new file mode 100644 index 0000000..d3769c4 --- /dev/null +++ b/account/sql/createDatabaseFileFromDBM.bat @@ -0,0 +1,9 @@ +@ECHO OFF +set BASEDIR=%~dp0% +set PGMODELER_DIR=c:\app\pgmodeler + +setlocal +cd %PGMODELER_DIR% +pgmodeler-cli -if %BASEDIR%/account.dbm -ef -do -of %BASEDIR%/account.sql + +pause \ 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/boundary/AccountControl.java similarity index 92% rename from account/src/main/java/de/muehlencord/shared/account/business/account/AccountControl.java rename to account/src/main/java/de/muehlencord/shared/account/business/account/boundary/AccountControl.java index 5ecac99..38ef130 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/boundary/AccountControl.java @@ -1,10 +1,12 @@ -package de.muehlencord.shared.account.business.account; +package de.muehlencord.shared.account.business.account.boundary; -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.ApplicationRoleEntity; +import de.muehlencord.shared.account.business.account.entity.AccountException; +import de.muehlencord.shared.account.business.account.entity.AccountStatus; +import de.muehlencord.shared.account.business.config.boundary.ConfigService; +import de.muehlencord.shared.account.business.mail.entity.MailException; +import de.muehlencord.shared.account.business.mail.boundary.MailService; +import de.muehlencord.shared.account.business.account.entity.AccountEntity; +import de.muehlencord.shared.account.business.account.entity.ApplicationRoleEntity; import de.muehlencord.shared.account.util.SecurityUtil; import java.io.Serializable; import java.util.ArrayList; diff --git a/account/src/main/java/de/muehlencord/shared/account/business/account/ApplicationPermissionControl.java b/account/src/main/java/de/muehlencord/shared/account/business/account/boundary/ApplicationPermissionControl.java similarity index 90% rename from account/src/main/java/de/muehlencord/shared/account/business/account/ApplicationPermissionControl.java rename to account/src/main/java/de/muehlencord/shared/account/business/account/boundary/ApplicationPermissionControl.java index 49cc4a9..ebb366f 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/account/ApplicationPermissionControl.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/boundary/ApplicationPermissionControl.java @@ -1,6 +1,7 @@ -package de.muehlencord.shared.account.business.account; +package de.muehlencord.shared.account.business.account.boundary; -import de.muehlencord.shared.account.entity.ApplicationPermissionEntity; +import de.muehlencord.shared.account.business.account.entity.AccountException; +import de.muehlencord.shared.account.business.account.entity.ApplicationPermissionEntity; import java.io.Serializable; import javax.ejb.Stateless; import javax.persistence.EntityManager; diff --git a/account/src/main/java/de/muehlencord/shared/account/business/account/ApplicationRoleControl.java b/account/src/main/java/de/muehlencord/shared/account/business/account/boundary/ApplicationRoleControl.java similarity index 93% rename from account/src/main/java/de/muehlencord/shared/account/business/account/ApplicationRoleControl.java rename to account/src/main/java/de/muehlencord/shared/account/business/account/boundary/ApplicationRoleControl.java index 3a52921..c316e04 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/account/ApplicationRoleControl.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/boundary/ApplicationRoleControl.java @@ -3,10 +3,11 @@ * To change this template file, choose Tools | Templates * and open the template in the editor. */ -package de.muehlencord.shared.account.business.account; +package de.muehlencord.shared.account.business.account.boundary; -import de.muehlencord.shared.account.entity.ApplicationPermissionEntity; -import de.muehlencord.shared.account.entity.ApplicationRoleEntity; +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 java.io.Serializable; import java.util.ArrayList; import java.util.List; diff --git a/account/src/main/java/de/muehlencord/shared/account/entity/Account.java b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/Account.java similarity index 83% rename from account/src/main/java/de/muehlencord/shared/account/entity/Account.java rename to account/src/main/java/de/muehlencord/shared/account/business/account/entity/Account.java index d2f4741..26127c1 100644 --- a/account/src/main/java/de/muehlencord/shared/account/entity/Account.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/Account.java @@ -3,7 +3,7 @@ * To change this template file, choose Tools | Templates * and open the template in the editor. */ -package de.muehlencord.shared.account.entity; +package de.muehlencord.shared.account.business.account.entity; /** * diff --git a/account/src/main/java/de/muehlencord/shared/account/entity/AccountEntity.java b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountEntity.java similarity index 96% rename from account/src/main/java/de/muehlencord/shared/account/entity/AccountEntity.java rename to account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountEntity.java index 5d15472..96bf9cb 100644 --- a/account/src/main/java/de/muehlencord/shared/account/entity/AccountEntity.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountEntity.java @@ -1,4 +1,4 @@ -package de.muehlencord.shared.account.entity; +package de.muehlencord.shared.account.business.account.entity; import java.io.Serializable; import java.util.Date; diff --git a/account/src/main/java/de/muehlencord/shared/account/business/account/AccountException.java b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountException.java similarity index 77% rename from account/src/main/java/de/muehlencord/shared/account/business/account/AccountException.java rename to account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountException.java index 5699b06..3e06a85 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/account/AccountException.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountException.java @@ -1,4 +1,4 @@ -package de.muehlencord.shared.account.business.account; +package de.muehlencord.shared.account.business.account.entity; /** * @@ -23,7 +23,7 @@ public class AccountException extends Exception { super(msg); } - AccountException(String entity_updated__deleted_please_reload, boolean b) { + public AccountException(String entity_updated__deleted_please_reload, boolean b) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } } diff --git a/account/src/main/java/de/muehlencord/shared/account/entity/AccountHistoryEntity.java b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountHistoryEntity.java similarity index 95% rename from account/src/main/java/de/muehlencord/shared/account/entity/AccountHistoryEntity.java rename to account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountHistoryEntity.java index 1df1ea5..7b27499 100644 --- a/account/src/main/java/de/muehlencord/shared/account/entity/AccountHistoryEntity.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountHistoryEntity.java @@ -1,4 +1,4 @@ -package de.muehlencord.shared.account.entity; +package de.muehlencord.shared.account.business.account.entity; import java.io.Serializable; import java.util.Date; diff --git a/account/src/main/java/de/muehlencord/shared/account/business/account/AccountStatus.java b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountStatus.java similarity index 82% rename from account/src/main/java/de/muehlencord/shared/account/business/account/AccountStatus.java rename to account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountStatus.java index d1a62f7..d7a3ed8 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/account/AccountStatus.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/AccountStatus.java @@ -1,4 +1,4 @@ -package de.muehlencord.shared.account.business.account; +package de.muehlencord.shared.account.business.account.entity; /** * diff --git a/account/src/main/java/de/muehlencord/shared/account/entity/ApplicationPermissionEntity.java b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/ApplicationPermissionEntity.java similarity index 95% rename from account/src/main/java/de/muehlencord/shared/account/entity/ApplicationPermissionEntity.java rename to account/src/main/java/de/muehlencord/shared/account/business/account/entity/ApplicationPermissionEntity.java index ee7e489..e65357d 100644 --- a/account/src/main/java/de/muehlencord/shared/account/entity/ApplicationPermissionEntity.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/ApplicationPermissionEntity.java @@ -1,4 +1,4 @@ -package de.muehlencord.shared.account.entity; +package de.muehlencord.shared.account.business.account.entity; import java.io.Serializable; import java.util.List; diff --git a/account/src/main/java/de/muehlencord/shared/account/entity/ApplicationRoleEntity.java b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/ApplicationRoleEntity.java similarity index 95% rename from account/src/main/java/de/muehlencord/shared/account/entity/ApplicationRoleEntity.java rename to account/src/main/java/de/muehlencord/shared/account/business/account/entity/ApplicationRoleEntity.java index cfec8a5..2c3e71c 100644 --- a/account/src/main/java/de/muehlencord/shared/account/entity/ApplicationRoleEntity.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/account/entity/ApplicationRoleEntity.java @@ -1,4 +1,4 @@ -package de.muehlencord.shared.account.entity; +package de.muehlencord.shared.account.business.account.entity; import java.io.Serializable; import java.util.List; diff --git a/account/src/main/java/de/muehlencord/shared/account/configuration/AccountConfigurationKey.java b/account/src/main/java/de/muehlencord/shared/account/business/accountcounfig/entity/AccountConfigurationKey.java similarity index 83% rename from account/src/main/java/de/muehlencord/shared/account/configuration/AccountConfigurationKey.java rename to account/src/main/java/de/muehlencord/shared/account/business/accountcounfig/entity/AccountConfigurationKey.java index 242962b..03af1b4 100644 --- a/account/src/main/java/de/muehlencord/shared/account/configuration/AccountConfigurationKey.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/accountcounfig/entity/AccountConfigurationKey.java @@ -3,7 +3,7 @@ * To change this template file, choose Tools | Templates * and open the template in the editor. */ -package de.muehlencord.shared.account.configuration; +package de.muehlencord.shared.account.business.accountcounfig.entity; /** * diff --git a/account/src/main/java/de/muehlencord/shared/account/configuration/AccountConfigurationValue.java b/account/src/main/java/de/muehlencord/shared/account/business/accountcounfig/entity/AccountConfigurationValue.java similarity index 87% rename from account/src/main/java/de/muehlencord/shared/account/configuration/AccountConfigurationValue.java rename to account/src/main/java/de/muehlencord/shared/account/business/accountcounfig/entity/AccountConfigurationValue.java index ca5fac6..cb1c455 100644 --- a/account/src/main/java/de/muehlencord/shared/account/configuration/AccountConfigurationValue.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/accountcounfig/entity/AccountConfigurationValue.java @@ -3,7 +3,7 @@ * To change this template file, choose Tools | Templates * and open the template in the editor. */ -package de.muehlencord.shared.account.configuration; +package de.muehlencord.shared.account.business.accountcounfig.entity; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/account/src/main/java/de/muehlencord/shared/account/business/ConfigService.java b/account/src/main/java/de/muehlencord/shared/account/business/config/boundary/ConfigService.java similarity index 71% rename from account/src/main/java/de/muehlencord/shared/account/business/ConfigService.java rename to account/src/main/java/de/muehlencord/shared/account/business/config/boundary/ConfigService.java index 85100ff..6bcc17f 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/ConfigService.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/config/boundary/ConfigService.java @@ -1,6 +1,6 @@ -package de.muehlencord.shared.account.business; +package de.muehlencord.shared.account.business.config.boundary; -import de.muehlencord.shared.account.entity.ConfigEntity; +import de.muehlencord.shared.account.business.config.entity.ConfigEntity; import java.io.Serializable; import javax.annotation.PostConstruct; import javax.ejb.Singleton; @@ -42,11 +42,23 @@ public class ConfigService implements Serializable { } /* *** getter *** */ - // FIXME remove, this is application specific + /** + * FIXME remove, this is application specific + * @return + * @deprecated replace by getConfigValue ("storage.path") + */ + @Deprecated public String getStoragePath() { return storagePath; } + + /** + * // TODO move to accountControl + * @return + * @deprecated replace by getConfigValue ("account.maxFailedLogins") + */ + @Deprecated public int getMaxFailedLogins() { return maxFailedLogins; } diff --git a/account/src/main/java/de/muehlencord/shared/account/entity/ConfigEntity.java b/account/src/main/java/de/muehlencord/shared/account/business/config/entity/ConfigEntity.java similarity index 61% rename from account/src/main/java/de/muehlencord/shared/account/entity/ConfigEntity.java rename to account/src/main/java/de/muehlencord/shared/account/business/config/entity/ConfigEntity.java index 118e91a..6a0674e 100644 --- a/account/src/main/java/de/muehlencord/shared/account/entity/ConfigEntity.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/config/entity/ConfigEntity.java @@ -1,11 +1,14 @@ -package de.muehlencord.shared.account.entity; +package de.muehlencord.shared.account.business.config.entity; +import de.muehlencord.shared.account.business.account.entity.AccountEntity; import java.io.Serializable; import javax.persistence.Basic; import javax.persistence.Cacheable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.QueryHint; @@ -21,25 +24,24 @@ import org.hibernate.annotations.CacheConcurrencyStrategy; * @author joern.muehlencord */ @Entity - @Table(name = "config") - @XmlRootElement - @Cacheable(true) - @Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL, region = "Configuration") - @NamedQueries({ +@Table(name = "config") +@XmlRootElement +@Cacheable(true) +@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL, region = "Configuration") +@NamedQueries({ @NamedQuery(name = "ConfigEntity.findAll", query = "SELECT c FROM ConfigEntity c ORDER BY c.configKey", hints = { - @QueryHint(name = "org.hibernate.cacheable", value = "true") - , @QueryHint(name = "org.hibernate.cacheRegion", value = "Queries")}) - , @NamedQuery(name = "ConfigEntity.findByConfigKey", query = "SELECT c FROM ConfigEntity c WHERE c.configKey = :configKey", + @QueryHint(name = "org.hibernate.cacheable", value = "true"), + @QueryHint(name = "org.hibernate.cacheRegion", value = "Queries")}), + @NamedQuery(name = "ConfigEntity.findByConfigKey", query = "SELECT c FROM ConfigEntity c WHERE c.configKey = :configKey", hints = { - @QueryHint(name = "org.hibernate.cacheable", value = "true") - , @QueryHint(name = "org.hibernate.cacheRegion", value = "Queries")}) - - , @NamedQuery(name = "ConfigEntity.findByConfigValue", query = "SELECT c FROM ConfigEntity c WHERE c.configValue = :configValue", + @QueryHint(name = "org.hibernate.cacheable", value = "true"), + @QueryHint(name = "org.hibernate.cacheRegion", value = "Queries")}), + @NamedQuery(name = "ConfigEntity.findByConfigValue", query = "SELECT c FROM ConfigEntity c WHERE c.configValue = :configValue", hints = { - @QueryHint(name = "org.hibernate.cacheable", value = "true") - , @QueryHint(name = "org.hibernate.cacheRegion", value = "Queries")}) - }) + @QueryHint(name = "org.hibernate.cacheable", value = "true"), + @QueryHint(name = "org.hibernate.cacheRegion", value = "Queries")}) +}) public class ConfigEntity implements Serializable { @@ -51,6 +53,14 @@ public class ConfigEntity implements Serializable { @Size(min = 1, max = 100) @Column(name = "config_key") private String configKey; + @Basic(optional = true) + @Size(min = 1, max = 200) + @Column(name = "config_key_group") + private String configKeyGroup; + @JoinColumn(name = "config_key_account", referencedColumnName = "id") + @ManyToOne(optional = true) + private AccountEntity configKeyAccount; + @Size(max = 200) @Column(name = "config_value") private String configValue; @@ -75,6 +85,22 @@ public class ConfigEntity implements Serializable { this.configKey = configKey; } + public String getConfigKeyGroup() { + return configKeyGroup; + } + + public void setConfigKeyGroup(String configKeyGroup) { + this.configKeyGroup = configKeyGroup; + } + + public AccountEntity getConfigKeyAccount() { + return configKeyAccount; + } + + public void setConfigKeyAccount(AccountEntity configKeyAccount) { + this.configKeyAccount = configKeyAccount; + } + public String getConfigValue() { return configValue; } diff --git a/account/src/main/java/de/muehlencord/shared/account/entity/MailTemplateEntity.java b/account/src/main/java/de/muehlencord/shared/account/business/mail/MailTemplateEntity.java similarity index 95% rename from account/src/main/java/de/muehlencord/shared/account/entity/MailTemplateEntity.java rename to account/src/main/java/de/muehlencord/shared/account/business/mail/MailTemplateEntity.java index 2cd4be6..007deb9 100644 --- a/account/src/main/java/de/muehlencord/shared/account/entity/MailTemplateEntity.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/mail/MailTemplateEntity.java @@ -1,4 +1,4 @@ -package de.muehlencord.shared.account.entity; +package de.muehlencord.shared.account.business.mail; import java.io.Serializable; import javax.persistence.Basic; 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/boundary/MailService.java similarity index 92% rename from account/src/main/java/de/muehlencord/shared/account/business/mail/MailService.java rename to account/src/main/java/de/muehlencord/shared/account/business/mail/boundary/MailService.java index 95a3ae1..189acfe 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/boundary/MailService.java @@ -1,7 +1,10 @@ -package de.muehlencord.shared.account.business.mail; +package de.muehlencord.shared.account.business.mail.boundary; -import de.muehlencord.shared.account.configuration.AccountConfigurationKey; -import de.muehlencord.shared.account.entity.AccountEntity; +import de.muehlencord.shared.account.business.mail.entity.MailTemplateException; +import de.muehlencord.shared.account.business.accountcounfig.entity.AccountConfigurationKey; +import de.muehlencord.shared.account.business.account.entity.AccountEntity; +import de.muehlencord.shared.account.business.mail.entity.MailDatamodel; +import de.muehlencord.shared.account.business.mail.entity.MailException; import java.util.Date; import java.util.UUID; import javax.annotation.Resource; @@ -19,7 +22,7 @@ import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import de.muehlencord.shared.account.configuration.AccountConfigurationValue; +import de.muehlencord.shared.account.business.accountcounfig.entity.AccountConfigurationValue; import java.io.File; import java.io.IOException; import java.io.Serializable; diff --git a/account/src/main/java/de/muehlencord/shared/account/business/mail/MailTemplateService.java b/account/src/main/java/de/muehlencord/shared/account/business/mail/boundary/MailTemplateService.java similarity index 87% rename from account/src/main/java/de/muehlencord/shared/account/business/mail/MailTemplateService.java rename to account/src/main/java/de/muehlencord/shared/account/business/mail/boundary/MailTemplateService.java index 274b073..7098069 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/mail/MailTemplateService.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/mail/boundary/MailTemplateService.java @@ -1,6 +1,8 @@ -package de.muehlencord.shared.account.business.mail; +package de.muehlencord.shared.account.business.mail.boundary; -import de.muehlencord.shared.account.entity.MailTemplateEntity; +import de.muehlencord.shared.account.business.mail.entity.MailDatamodel; +import de.muehlencord.shared.account.business.mail.entity.MailTemplateException; +import de.muehlencord.shared.account.business.mail.MailTemplateEntity; import freemarker.cache.StringTemplateLoader; import freemarker.template.Configuration; import freemarker.template.Template; diff --git a/account/src/main/java/de/muehlencord/shared/account/business/mail/MailDatamodel.java b/account/src/main/java/de/muehlencord/shared/account/business/mail/entity/MailDatamodel.java similarity index 81% rename from account/src/main/java/de/muehlencord/shared/account/business/mail/MailDatamodel.java rename to account/src/main/java/de/muehlencord/shared/account/business/mail/entity/MailDatamodel.java index 44988f3..96d368c 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/mail/MailDatamodel.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/mail/entity/MailDatamodel.java @@ -1,6 +1,6 @@ -package de.muehlencord.shared.account.business.mail; +package de.muehlencord.shared.account.business.mail.entity; -import de.muehlencord.shared.account.entity.AccountEntity; +import de.muehlencord.shared.account.business.account.entity.AccountEntity; import java.util.HashMap; import java.util.Map; diff --git a/account/src/main/java/de/muehlencord/shared/account/business/mail/MailException.java b/account/src/main/java/de/muehlencord/shared/account/business/mail/entity/MailException.java similarity index 88% rename from account/src/main/java/de/muehlencord/shared/account/business/mail/MailException.java rename to account/src/main/java/de/muehlencord/shared/account/business/mail/entity/MailException.java index 6471740..bc10f1c 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/mail/MailException.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/mail/entity/MailException.java @@ -1,4 +1,4 @@ -package de.muehlencord.shared.account.business.mail; +package de.muehlencord.shared.account.business.mail.entity; /** * diff --git a/account/src/main/java/de/muehlencord/shared/account/business/mail/MailTemplateException.java b/account/src/main/java/de/muehlencord/shared/account/business/mail/entity/MailTemplateException.java similarity index 89% rename from account/src/main/java/de/muehlencord/shared/account/business/mail/MailTemplateException.java rename to account/src/main/java/de/muehlencord/shared/account/business/mail/entity/MailTemplateException.java index 3075952..c6b68aa 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/mail/MailTemplateException.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/mail/entity/MailTemplateException.java @@ -1,4 +1,4 @@ -package de.muehlencord.shared.account.business.mail; +package de.muehlencord.shared.account.business.mail.entity; /** * diff --git a/account/src/main/java/de/muehlencord/shared/account/ui/LoginView.java b/account/src/main/java/de/muehlencord/shared/account/presentation/LoginView.java similarity index 92% rename from account/src/main/java/de/muehlencord/shared/account/ui/LoginView.java rename to account/src/main/java/de/muehlencord/shared/account/presentation/LoginView.java index 588579f..d2992de 100644 --- a/account/src/main/java/de/muehlencord/shared/account/ui/LoginView.java +++ b/account/src/main/java/de/muehlencord/shared/account/presentation/LoginView.java @@ -1,7 +1,7 @@ -package de.muehlencord.shared.account.ui; +package de.muehlencord.shared.account.presentation; -import de.muehlencord.shared.account.business.account.AccountControl; -import de.muehlencord.shared.account.entity.AccountEntity; +import de.muehlencord.shared.account.business.account.boundary.AccountControl; +import de.muehlencord.shared.account.business.account.entity.AccountEntity; import de.muehlencord.shared.jeeutil.FacesUtil; import java.io.IOException; import java.io.Serializable; diff --git a/account/src/main/java/de/muehlencord/shared/account/ui/LostPasswordView.java b/account/src/main/java/de/muehlencord/shared/account/presentation/LostPasswordView.java similarity index 87% rename from account/src/main/java/de/muehlencord/shared/account/ui/LostPasswordView.java rename to account/src/main/java/de/muehlencord/shared/account/presentation/LostPasswordView.java index 09748dd..84dcc00 100644 --- a/account/src/main/java/de/muehlencord/shared/account/ui/LostPasswordView.java +++ b/account/src/main/java/de/muehlencord/shared/account/presentation/LostPasswordView.java @@ -1,6 +1,6 @@ -package de.muehlencord.shared.account.ui; +package de.muehlencord.shared.account.presentation; -import de.muehlencord.shared.account.business.account.AccountControl; +import de.muehlencord.shared.account.business.account.boundary.AccountControl; import de.muehlencord.shared.jeeutil.FacesUtil; import java.io.Serializable; import javax.ejb.EJB; diff --git a/account/src/test/java/de/muehlencord/shared/account/business/ConfigServiceTest.java b/account/src/test/java/de/muehlencord/shared/account/business/config/boundary/ConfigServiceTest.java similarity index 80% rename from account/src/test/java/de/muehlencord/shared/account/business/ConfigServiceTest.java rename to account/src/test/java/de/muehlencord/shared/account/business/config/boundary/ConfigServiceTest.java index 1839ee1..08f3ea1 100644 --- a/account/src/test/java/de/muehlencord/shared/account/business/ConfigServiceTest.java +++ b/account/src/test/java/de/muehlencord/shared/account/business/config/boundary/ConfigServiceTest.java @@ -1,7 +1,8 @@ -package de.muehlencord.shared.account.business; +package de.muehlencord.shared.account.business.config.boundary; -import de.muehlencord.shared.account.entity.ConfigEntity; +import de.muehlencord.shared.account.business.config.boundary.ConfigService; +import de.muehlencord.shared.account.business.config.entity.ConfigEntity; import javax.persistence.EntityManager; import static org.junit.Assert.assertEquals; import org.junit.Test;