diff --git a/src/main/java/tech/ailef/dbadmin/DbAdmin.java b/src/main/java/tech/ailef/dbadmin/DbAdmin.java index 35dc295..78e7f15 100644 --- a/src/main/java/tech/ailef/dbadmin/DbAdmin.java +++ b/src/main/java/tech/ailef/dbadmin/DbAdmin.java @@ -10,6 +10,7 @@ import java.util.Set; import java.util.logging.Logger; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.boot.autoconfigure.web.ServerProperties; @@ -48,7 +49,7 @@ import tech.ailef.dbadmin.misc.Utils; public class DbAdmin { private static final Logger logger = Logger.getLogger(DbAdmin.class.getName()); - @PersistenceContext +// @PersistenceContext private EntityManager entityManager; private List schemas = new ArrayList<>(); diff --git a/src/main/java/tech/ailef/dbadmin/DbAdminAutoConfiguration.java b/src/main/java/tech/ailef/dbadmin/DbAdminAutoConfiguration.java index 2b54652..8a01e7c 100644 --- a/src/main/java/tech/ailef/dbadmin/DbAdminAutoConfiguration.java +++ b/src/main/java/tech/ailef/dbadmin/DbAdminAutoConfiguration.java @@ -1,14 +1,71 @@ package tech.ailef.dbadmin; +import java.util.HashMap; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Primary; +import org.springframework.core.env.Environment; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; +import org.springframework.transaction.PlatformTransactionManager; @ConditionalOnProperty(name = "dbadmin.enabled", matchIfMissing = true) @ComponentScan @EnableConfigurationProperties(DbAdminProperties.class) @AutoConfiguration public class DbAdminAutoConfiguration { + @Autowired + Environment env; +// @Bean +// @Primary +//// @ConfigurationProperties("spring.datasource.dbadmin") +// public DataSourceProperties internalDataSourceProperties() { +// return new DataSourceProperties(); +// } + + @Bean +// @Primary + public DataSource internalDataSource() { + DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create(); + dataSourceBuilder.driverClassName("org.h2.Driver"); + dataSourceBuilder.url("jdbc:h2:file:./dbadmin_internal"); + dataSourceBuilder.username("sa"); + dataSourceBuilder.password("password"); + return dataSourceBuilder.build(); + } + + @Bean +// @Primary + public LocalContainerEntityManagerFactoryBean primeEntityManager() { + LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); + em.setDataSource(internalDataSource()); + em.setPackagesToScan("tech.ailef.dbadmin.model"); + HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); + em.setJpaVendorAdapter(vendorAdapter); + HashMap properties = new HashMap<>(); + properties.put("spring.jpa.hibernate.ddl-auto", env.getProperty("spring.jpa.hibernate.ddl-auto")); +// properties.put("hibernate.dialect", env.getProperty("hibernate.dialect")); + em.setJpaPropertyMap(properties); + return em; + } + + @Bean +// @Primary + public PlatformTransactionManager primeTransactionManager() { + JpaTransactionManager transactionManager = new JpaTransactionManager(); + transactionManager.setEntityManagerFactory(primeEntityManager().getObject()); + return transactionManager; + } + + } \ No newline at end of file diff --git a/src/main/java/tech/ailef/dbadmin/model/Action.java b/src/main/java/tech/ailef/dbadmin/model/Action.java new file mode 100644 index 0000000..b7a338f --- /dev/null +++ b/src/main/java/tech/ailef/dbadmin/model/Action.java @@ -0,0 +1,32 @@ +package tech.ailef.dbadmin.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; + +@Entity +public class Action { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private int id; + + private String description; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 13b71fa..314afad 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,7 +1,8 @@ +spring.jpa.hibernate.ddl-auto=create -#spring.datasource.url=jdbc:h2:file:./database -#spring.datasource.username=sa -#spring.datasource.password=password +#spring.datasource.dbadmin.url=jdbc:h2:file:./database +#spring.datasource.dbadmin.username=sa +#spring.datasource.dbadmin.password=password #spring.h2.console.enabled=true #spring.jpa.show-sql=true