[Editor] Add support for H2 database
This commit is contained in:
@@ -48,6 +48,8 @@ dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-freemarker'
|
||||
implementation "org.slf4j:jul-to-slf4j:${slf4jVersion}"
|
||||
implementation "com.h2database:h2:${h2Version}"
|
||||
implementation "com.zaxxer:HikariCP:${hikariVersion}"
|
||||
}
|
||||
|
||||
task provideGameEngine(type: Copy) {
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.bartlomiejpluta.base.editor.database.source
|
||||
|
||||
import com.zaxxer.hikari.HikariConfig
|
||||
import com.zaxxer.hikari.HikariDataSource
|
||||
import java.io.File
|
||||
import java.sql.Connection
|
||||
|
||||
class DataSource(dbFile: File) {
|
||||
private val config = HikariConfig()
|
||||
private val source: HikariDataSource
|
||||
|
||||
init {
|
||||
config.jdbcUrl = "jdbc:h2:file:${dbFile.absolutePath.replace("\\", "/")}"
|
||||
config.username = "root"
|
||||
config.password = ""
|
||||
source = HikariDataSource(config)
|
||||
}
|
||||
|
||||
val connection: Connection
|
||||
get() = source.connection
|
||||
|
||||
fun close() = source.close()
|
||||
}
|
||||
@@ -63,8 +63,9 @@ class DefaultProjectContext : ProjectContext {
|
||||
override var project by projectProperty
|
||||
|
||||
init {
|
||||
projectProperty.addListener { _, _, newProject ->
|
||||
newProject?.mkdirs()
|
||||
projectProperty.addListener { _, prevProject, newProject ->
|
||||
prevProject?.dispose()
|
||||
newProject?.init()
|
||||
tileSetCache.clear()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.bartlomiejpluta.base.editor.project.model
|
||||
|
||||
import com.bartlomiejpluta.base.editor.animation.asset.AnimationAsset
|
||||
import com.bartlomiejpluta.base.editor.audio.asset.SoundAsset
|
||||
import com.bartlomiejpluta.base.editor.database.source.DataSource
|
||||
import com.bartlomiejpluta.base.editor.entityset.asset.EntitySet
|
||||
import com.bartlomiejpluta.base.editor.file.model.FileSystemNode
|
||||
import com.bartlomiejpluta.base.editor.gui.font.asset.FontAsset
|
||||
@@ -27,6 +28,9 @@ class Project {
|
||||
val projectFileProperty = createObjectBinding({ File(sourceDirectory, PROJECT_FILE) }, sourceDirectoryProperty)
|
||||
val projectFile by projectFileProperty
|
||||
|
||||
val databaseFileProperty = createObjectBinding({ File(sourceDirectory, DATABASE_FILE) }, sourceDirectoryProperty)
|
||||
val databaseFile by databaseFileProperty
|
||||
|
||||
val runnerProperty = SimpleStringProperty()
|
||||
var runner by runnerProperty
|
||||
|
||||
@@ -100,6 +104,8 @@ class Project {
|
||||
createObjectBinding({ File(buildOutDirectory, PROJECT_OUTPUT_JAR_FILE) }, buildOutDirectoryProperty)
|
||||
val buildOutputJarFile by buildOutputJarFileProperty
|
||||
|
||||
lateinit var database: DataSource
|
||||
|
||||
init {
|
||||
sourceDirectoryProperty.addListener { _, _, dir ->
|
||||
dir?.let {
|
||||
@@ -120,7 +126,16 @@ class Project {
|
||||
}
|
||||
}
|
||||
|
||||
fun mkdirs() {
|
||||
fun init() {
|
||||
database = DataSource(databaseFile)
|
||||
mkdirs()
|
||||
}
|
||||
|
||||
fun dispose() {
|
||||
database.close()
|
||||
}
|
||||
|
||||
private fun mkdirs() {
|
||||
sourceDirectory?.mkdirs()
|
||||
mapsDirectory?.mkdirs()
|
||||
tileSetsDirectory?.mkdirs()
|
||||
@@ -135,6 +150,7 @@ class Project {
|
||||
|
||||
companion object {
|
||||
const val PROJECT_FILE = "project.bep"
|
||||
const val DATABASE_FILE = "data"
|
||||
const val PROJECT_OUTPUT_JAR_FILE = "game.jar"
|
||||
|
||||
const val MAPS_DIR = "maps"
|
||||
|
||||
@@ -11,4 +11,6 @@ protobufPluginVersion=0.8.14
|
||||
protobufVersion=3.14.0
|
||||
richtextfxVersion=0.10.5
|
||||
janinoVersion=3.1.3
|
||||
apacheCommonsVersion=3.6.1
|
||||
apacheCommonsVersion=3.6.1
|
||||
h2Version=1.4.200
|
||||
hikariVersion=4.0.3
|
||||
Reference in New Issue
Block a user