package services; import controllers.Component; import managers.AccountManager; import managers.GroupManager; import models.Account; import models.Group; import models.enums.AccountRole; import models.enums.GroupType; import play.Configuration; import play.db.jpa.JPAApi; import javax.inject.Inject; import javax.inject.Singleton; /** * Created by Iven on 02.12.2015. */ @Singleton public class PostgresInit implements DatabaseService { JPAApi jpaApi; AccountManager accountManager; GroupManager groupManager; Configuration configuration; @Inject public PostgresInit(JPAApi jpaApi, AccountManager accountManager, GroupManager groupManager, Configuration configuration) { this.jpaApi = jpaApi; this.accountManager = accountManager; this.groupManager = groupManager; this.configuration = configuration; initialization(); } @Override public void initialization() { final String adminGroupTitle = configuration.getString("htwplus.admin.group"); final String adminMail = configuration.getString("htwplus.admin.mail"); final String adminPassword = configuration.getString("htwplus.admin.pw"); final String dummyMail = configuration.getString("htwplus.dummy.mail"); final String dummyPassword = configuration.getString("htwplus.dummy.pw"); final String feedbackGroupTitle = configuration.getString("htwplus.feedback.group"); this.jpaApi.withTransaction(() -> { // create admin account if none exists Account adminAccount = accountManager.findByEmail(adminMail); if (adminAccount == null) { adminAccount = new Account(); adminAccount.email = adminMail; adminAccount.firstname = "Admin"; adminAccount.lastname = "@HTWplus"; adminAccount.role = AccountRole.ADMIN; adminAccount.avatar = "1"; adminAccount.password = Component.md5(adminPassword); accountManager.create(adminAccount); } // create dummy account if none exists if (accountManager.findByEmail(dummyMail) == null) { Account dummyAccount = new Account(); dummyAccount.email = dummyMail; dummyAccount.firstname = "Gelöschter"; dummyAccount.lastname = "Account"; dummyAccount.role = AccountRole.DUMMY; dummyAccount.avatar = "1"; dummyAccount.password = Component.md5(dummyPassword); accountManager.create(dummyAccount); } // create admin group if none exists if (groupManager.findByTitle(adminGroupTitle) == null) { Group adminGroup = new Group(); adminGroup.title = adminGroupTitle; adminGroup.groupType = GroupType.close; adminGroup.description = "for HTWplus Admins only"; groupManager.createWithGroupAccount(adminGroup, adminAccount); } // create feedback group if none exists if (groupManager.findByTitle(feedbackGroupTitle) == null) { Group feedbackGroup = new Group(); feedbackGroup.title = feedbackGroupTitle; feedbackGroup.groupType = GroupType.open; feedbackGroup.description = "Du hast Wünsche, Ideen, Anregungen, Kritik oder Probleme mit der Seite? Hier kannst du es loswerden!"; groupManager.createWithGroupAccount(feedbackGroup, adminAccount); } }); } }