diff --git a/pom.xml b/pom.xml index 03a321318618b81143c7432c5f6403822ab10e09..1b067419b27b1ba4768700e95ea699c756374c8f 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ <groupId>de.deadlocker8</groupId> <artifactId>BudgetMaster</artifactId> - <version>2.9.2</version> + <version>2.10.0</version> <name>BudgetMaster</name> <repositories> @@ -77,7 +77,7 @@ <app.versionDate>${maven.build.timestamp}</app.versionDate> <maven.build.timestamp.format>dd.MM.yy</maven.build.timestamp.format> - <app.versionCode>37</app.versionCode> + <app.versionCode>38</app.versionCode> <app.author>Robert Goldmann</app.author> <project.outputDirectory>build/${project.version}</project.outputDirectory> @@ -155,6 +155,11 @@ <version>${h2database.version}</version> </dependency> + <dependency> + <groupId>org.postgresql</groupId> + <artifactId>postgresql</artifactId> + </dependency> + <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> diff --git a/src/main/java/de/deadlocker8/budgetmaster/Main.java b/src/main/java/de/deadlocker8/budgetmaster/Main.java index edbee1b178d89b1fef7784266388692b55c66ce3..6f269187ebb56d862bb98f9be3aabf549c619bc8 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/Main.java +++ b/src/main/java/de/deadlocker8/budgetmaster/Main.java @@ -1,5 +1,6 @@ package de.deadlocker8.budgetmaster; +import de.deadlocker8.budgetmaster.utils.DatabaseConfigurationProperties; import de.thecodelabs.utils.io.PathUtils; import de.thecodelabs.utils.util.Localization; import de.thecodelabs.utils.util.SystemUtils; @@ -11,6 +12,7 @@ import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.scheduling.annotation.EnableScheduling; @@ -25,6 +27,7 @@ import java.util.*; @EnableScheduling @SpringBootApplication +@EnableConfigurationProperties(DatabaseConfigurationProperties.class) public class Main extends SpringBootServletInitializer implements ApplicationRunner { private static final Logger LOGGER = LoggerFactory.getLogger(Main.class); diff --git a/src/main/java/de/deadlocker8/budgetmaster/authentication/User.java b/src/main/java/de/deadlocker8/budgetmaster/authentication/User.java index 4fb314b0750103928b816d6a7b22b2733872703e..d03f7f45dafa6bed654f62ecf4681ae6e7e7ce85 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/authentication/User.java +++ b/src/main/java/de/deadlocker8/budgetmaster/authentication/User.java @@ -7,6 +7,7 @@ import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; @Entity +@Table(name = "login_user") public class User { @Id diff --git a/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfiguration.java b/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfiguration.java index 0938019d80c95fcf03e129c0ea5e3afd7bd312f2..dd2b3b8b99dc15b192d93176fbb5d39b0f862b4f 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfiguration.java +++ b/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfiguration.java @@ -1,6 +1,6 @@ package de.deadlocker8.budgetmaster.utils; -import de.deadlocker8.budgetmaster.Main; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -8,18 +8,31 @@ import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.Profile; import javax.sql.DataSource; -import java.nio.file.Path; +import java.text.MessageFormat; @Configuration @Profile("!test") public class DatabaseConfiguration { + DatabaseConfigurationProperties databaseConfig; + + @Autowired + public DatabaseConfiguration(DatabaseConfigurationProperties databaseConfig) + { + this.databaseConfig = databaseConfig; + } + @Bean @Primary public DataSource dataSource() { - Path applicationSupportFolder = Main.getApplicationSupportFolder(); - String jdbcString = "jdbc:h2:/" + applicationSupportFolder.toString() + "/" + "budgetmaster;DB_CLOSE_ON_EXIT=TRUE"; - return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build(); + final String jdbcString = MessageFormat.format("jdbc:postgresql://{0}:{1}/{2}", databaseConfig.getHostname(), Long.toString(databaseConfig.getPort()), databaseConfig.getDatabaseName()); + + return DataSourceBuilder.create() + .username(databaseConfig.getUsername()) + .password(databaseConfig.getPassword()) + .url(jdbcString) + .driverClassName("org.postgresql.Driver") + .build(); } } diff --git a/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfigurationProperties.java b/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfigurationProperties.java new file mode 100644 index 0000000000000000000000000000000000000000..daea5a91f5b9551bdc23d494dfb52ba721534d1f --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfigurationProperties.java @@ -0,0 +1,89 @@ +package de.deadlocker8.budgetmaster.utils; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; + +@ConfigurationProperties(prefix = "budgetmaster.database") +public class DatabaseConfigurationProperties +{ + @NotBlank + private String hostname; + + @Min(1) + @Max(65536) + private int port; + + @NotBlank + private String databaseName; + + @NotBlank + private String username; + + @NotBlank + private String password; + + public String getHostname() + { + return hostname; + } + + public void setHostname(String hostname) + { + this.hostname = hostname; + } + + public int getPort() + { + return port; + } + + public void setPort(int port) + { + this.port = port; + } + + public String getDatabaseName() + { + return databaseName; + } + + public void setDatabaseName(String databaseName) + { + this.databaseName = databaseName; + } + + public String getUsername() + { + return username; + } + + public void setUsername(String username) + { + this.username = username; + } + + public String getPassword() + { + return password; + } + + public void setPassword(String password) + { + this.password = password; + } + + @Override + public String toString() + { + return "DatabaseConfigurationProperties{" + + "hostname='" + hostname + '\'' + + ", port=" + port + + ", databaseName='" + databaseName + '\'' + + ", username='" + username + '\'' + + ", password='" + password + '\'' + + '}'; + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index a44ce63f3305a76e83ddcb5f8c6a69151bef2b76..f96ef5f3e7fa71ae9fc0b36c8ce5bf0f62ad60cd 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,5 +1,6 @@ spring.mvc.log-resolved-exception=false +spring.jpa.show-sql=false spring.jpa.hibernate.ddl-auto=update spring.servlet.multipart.max-file-size=100MB diff --git a/src/main/resources/config/templates/settings.properties b/src/main/resources/config/templates/settings.properties index 2781007ddde4c21d332ca12b2c7928708c5db5ee..4ae66e08f18c8460cd80108e5e384ec0257e1b37 100644 --- a/src/main/resources/config/templates/settings.properties +++ b/src/main/resources/config/templates/settings.properties @@ -2,6 +2,13 @@ server.port=9000 +### database settings ### +budgetmaster.database.hostname=localhost +budgetmaster.database.port=5432 +budgetmaster.database.databaseName=budgetmaster +budgetmaster.database.username=budgetmaster +budgetmaster.database.password=budgetmaster + ### SSL settings ### # do not change this property