[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'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-freemarker'
|
implementation 'org.springframework.boot:spring-boot-starter-freemarker'
|
||||||
implementation "org.slf4j:jul-to-slf4j:${slf4jVersion}"
|
implementation "org.slf4j:jul-to-slf4j:${slf4jVersion}"
|
||||||
|
implementation "com.h2database:h2:${h2Version}"
|
||||||
|
implementation "com.zaxxer:HikariCP:${hikariVersion}"
|
||||||
}
|
}
|
||||||
|
|
||||||
task provideGameEngine(type: Copy) {
|
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
|
override var project by projectProperty
|
||||||
|
|
||||||
init {
|
init {
|
||||||
projectProperty.addListener { _, _, newProject ->
|
projectProperty.addListener { _, prevProject, newProject ->
|
||||||
newProject?.mkdirs()
|
prevProject?.dispose()
|
||||||
|
newProject?.init()
|
||||||
tileSetCache.clear()
|
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.animation.asset.AnimationAsset
|
||||||
import com.bartlomiejpluta.base.editor.audio.asset.SoundAsset
|
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.entityset.asset.EntitySet
|
||||||
import com.bartlomiejpluta.base.editor.file.model.FileSystemNode
|
import com.bartlomiejpluta.base.editor.file.model.FileSystemNode
|
||||||
import com.bartlomiejpluta.base.editor.gui.font.asset.FontAsset
|
import com.bartlomiejpluta.base.editor.gui.font.asset.FontAsset
|
||||||
@@ -27,6 +28,9 @@ class Project {
|
|||||||
val projectFileProperty = createObjectBinding({ File(sourceDirectory, PROJECT_FILE) }, sourceDirectoryProperty)
|
val projectFileProperty = createObjectBinding({ File(sourceDirectory, PROJECT_FILE) }, sourceDirectoryProperty)
|
||||||
val projectFile by projectFileProperty
|
val projectFile by projectFileProperty
|
||||||
|
|
||||||
|
val databaseFileProperty = createObjectBinding({ File(sourceDirectory, DATABASE_FILE) }, sourceDirectoryProperty)
|
||||||
|
val databaseFile by databaseFileProperty
|
||||||
|
|
||||||
val runnerProperty = SimpleStringProperty()
|
val runnerProperty = SimpleStringProperty()
|
||||||
var runner by runnerProperty
|
var runner by runnerProperty
|
||||||
|
|
||||||
@@ -100,6 +104,8 @@ class Project {
|
|||||||
createObjectBinding({ File(buildOutDirectory, PROJECT_OUTPUT_JAR_FILE) }, buildOutDirectoryProperty)
|
createObjectBinding({ File(buildOutDirectory, PROJECT_OUTPUT_JAR_FILE) }, buildOutDirectoryProperty)
|
||||||
val buildOutputJarFile by buildOutputJarFileProperty
|
val buildOutputJarFile by buildOutputJarFileProperty
|
||||||
|
|
||||||
|
lateinit var database: DataSource
|
||||||
|
|
||||||
init {
|
init {
|
||||||
sourceDirectoryProperty.addListener { _, _, dir ->
|
sourceDirectoryProperty.addListener { _, _, dir ->
|
||||||
dir?.let {
|
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()
|
sourceDirectory?.mkdirs()
|
||||||
mapsDirectory?.mkdirs()
|
mapsDirectory?.mkdirs()
|
||||||
tileSetsDirectory?.mkdirs()
|
tileSetsDirectory?.mkdirs()
|
||||||
@@ -135,6 +150,7 @@ class Project {
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val PROJECT_FILE = "project.bep"
|
const val PROJECT_FILE = "project.bep"
|
||||||
|
const val DATABASE_FILE = "data"
|
||||||
const val PROJECT_OUTPUT_JAR_FILE = "game.jar"
|
const val PROJECT_OUTPUT_JAR_FILE = "game.jar"
|
||||||
|
|
||||||
const val MAPS_DIR = "maps"
|
const val MAPS_DIR = "maps"
|
||||||
|
|||||||
@@ -11,4 +11,6 @@ protobufPluginVersion=0.8.14
|
|||||||
protobufVersion=3.14.0
|
protobufVersion=3.14.0
|
||||||
richtextfxVersion=0.10.5
|
richtextfxVersion=0.10.5
|
||||||
janinoVersion=3.1.3
|
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