diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/QueryFieldCell.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/QueryFieldCell.kt index a5be38ba..8d77c734 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/QueryFieldCell.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/QueryFieldCell.kt @@ -1,12 +1,12 @@ package com.bartlomiejpluta.base.editor.database.component -import com.bartlomiejpluta.base.editor.database.model.Field -import com.bartlomiejpluta.base.editor.database.model.Row +import com.bartlomiejpluta.base.editor.database.model.data.DataField +import com.bartlomiejpluta.base.editor.database.model.data.DataRecord import javafx.scene.control.TableCell -class QueryFieldCell : TableCell() { +class QueryFieldCell : TableCell() { - override fun updateItem(item: Field?, empty: Boolean) { + override fun updateItem(item: DataField?, empty: Boolean) { super.updateItem(item, empty) when { diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SQLElementCell.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SQLElementCell.kt index d721b7c4..8c0f518b 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SQLElementCell.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SQLElementCell.kt @@ -1,17 +1,17 @@ package com.bartlomiejpluta.base.editor.database.component -import com.bartlomiejpluta.base.editor.database.model.SQLColumn -import com.bartlomiejpluta.base.editor.database.model.SQLElement -import com.bartlomiejpluta.base.editor.database.model.SQLTable +import com.bartlomiejpluta.base.editor.database.model.schema.Schema +import com.bartlomiejpluta.base.editor.database.model.schema.SchemaColumn +import com.bartlomiejpluta.base.editor.database.model.schema.SchemaTable import javafx.scene.control.ContextMenu import javafx.scene.control.cell.TextFieldTreeCell import tornadofx.action import tornadofx.item class SQLElementCell( - renameElement: (element: SQLElement, name: String) -> SQLElement, - deleteElement: (element: SQLElement) -> Unit -) : TextFieldTreeCell() { + renameElement: (element: Schema, name: String) -> Schema, + deleteElement: (element: Schema) -> Unit +) : TextFieldTreeCell() { private val tableMenu = ContextMenu().apply { item("Rename") { action { @@ -48,7 +48,7 @@ class SQLElementCell( converter = SQLElementStringConverter(this, renameElement) } - override fun updateItem(item: SQLElement?, empty: Boolean) { + override fun updateItem(item: Schema?, empty: Boolean) { super.updateItem(item, empty) if (empty || item == null) { @@ -58,15 +58,15 @@ class SQLElementCell( } text = when (item) { - is SQLColumn -> "${item.name}${if (item.nullable) "?" else ""}" + is SchemaColumn -> "${item.name}${if (item.nullable) "?" else ""}" else -> item.name } graphic = item.icon contextMenu = when (item) { - is SQLTable -> tableMenu - is SQLColumn -> columnMenu + is SchemaTable -> tableMenu + is SchemaColumn -> columnMenu else -> null } } diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SQLElementStringConverter.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SQLElementStringConverter.kt index 2aef660e..7c4634b3 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SQLElementStringConverter.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/component/SQLElementStringConverter.kt @@ -1,14 +1,14 @@ package com.bartlomiejpluta.base.editor.database.component -import com.bartlomiejpluta.base.editor.database.model.SQLElement +import com.bartlomiejpluta.base.editor.database.model.schema.Schema import javafx.scene.control.TreeCell import javafx.util.StringConverter class SQLElementStringConverter( - private val cell: TreeCell, - private val rename: (item: SQLElement, newName: String) -> SQLElement -) : StringConverter() { - override fun toString(item: SQLElement?): String = item?.name ?: "" + private val cell: TreeCell, + private val rename: (item: Schema, newName: String) -> Schema +) : StringConverter() { + override fun toString(item: Schema?): String = item?.name ?: "" // Disclaimer: // This is actually the only place where we have an access to both actual element diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/Field.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/Field.kt deleted file mode 100644 index 2130a57a..00000000 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/Field.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.bartlomiejpluta.base.editor.database.model - -class Field(val value: String) \ No newline at end of file diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/Row.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/Row.kt deleted file mode 100644 index 4b42212c..00000000 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/Row.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.bartlomiejpluta.base.editor.database.model - -class Row(val fields: Map) \ No newline at end of file diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/data/DataField.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/data/DataField.kt new file mode 100644 index 00000000..f49936eb --- /dev/null +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/data/DataField.kt @@ -0,0 +1,3 @@ +package com.bartlomiejpluta.base.editor.database.model.data + +class DataField(val value: String) \ No newline at end of file diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/data/DataRecord.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/data/DataRecord.kt new file mode 100644 index 00000000..d1e975be --- /dev/null +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/data/DataRecord.kt @@ -0,0 +1,3 @@ +package com.bartlomiejpluta.base.editor.database.model.data + +class DataRecord(val fields: Map) \ No newline at end of file diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/Query.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/data/Query.kt similarity index 70% rename from editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/Query.kt rename to editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/data/Query.kt index 055f17cd..1eca6632 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/Query.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/data/Query.kt @@ -1,9 +1,9 @@ -package com.bartlomiejpluta.base.editor.database.model +package com.bartlomiejpluta.base.editor.database.model.data import tornadofx.getValue import tornadofx.toProperty -class Query(name: String, val columns: List, val data: List) { +class Query(name: String, val columns: List, val data: List) { val nameProperty = name.toProperty() val name by nameProperty } \ No newline at end of file diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/ColumnType.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/ColumnType.kt similarity index 85% rename from editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/ColumnType.kt rename to editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/ColumnType.kt index 630bd5e4..bf19ca26 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/ColumnType.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/ColumnType.kt @@ -1,4 +1,4 @@ -package com.bartlomiejpluta.base.editor.database.model +package com.bartlomiejpluta.base.editor.database.model.schema enum class ColumnType { INTEGER, diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/SQLElement.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/Schema.kt similarity index 70% rename from editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/SQLElement.kt rename to editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/Schema.kt index 9b0b40d8..824c4429 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/SQLElement.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/Schema.kt @@ -1,9 +1,9 @@ -package com.bartlomiejpluta.base.editor.database.model +package com.bartlomiejpluta.base.editor.database.model.schema import javafx.scene.Node import java.sql.Connection -interface SQLElement { +interface Schema { val name: String fun rename(connection: Connection, newName: String) diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/SQLColumn.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaColumn.kt similarity index 93% rename from editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/SQLColumn.kt rename to editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaColumn.kt index f19b76b9..18eb7274 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/SQLColumn.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaColumn.kt @@ -1,15 +1,15 @@ -package com.bartlomiejpluta.base.editor.database.model +package com.bartlomiejpluta.base.editor.database.model.schema import org.kordamp.ikonli.javafx.FontIcon import java.sql.Connection -class SQLColumn( - val table: SQLTable, +class SchemaColumn( + val table: SchemaTable, name: String, val type: ColumnType, val nullable: Boolean, val primary: Boolean -) : SQLElement { +) : Schema { override var name: String = name private set(value) { field = value.toUpperCase() diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/SQLDatabase.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaDatabase.kt similarity index 69% rename from editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/SQLDatabase.kt rename to editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaDatabase.kt index 2268ba88..9a0e3041 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/SQLDatabase.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaDatabase.kt @@ -1,15 +1,15 @@ -package com.bartlomiejpluta.base.editor.database.model +package com.bartlomiejpluta.base.editor.database.model.schema import javafx.scene.Node import tornadofx.observableListOf import java.sql.Connection -class SQLDatabase : SQLElement { +class SchemaDatabase : Schema { override val name = "Database" - val tables = observableListOf() + val tables = observableListOf() fun addTable(name: String) { - tables.add(SQLTable(this, name)) + tables.add(SchemaTable(this, name)) } override fun rename(connection: Connection, newName: String) { diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/SQLTable.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaTable.kt similarity index 73% rename from editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/SQLTable.kt rename to editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaTable.kt index 1260f174..5dbf34d5 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/SQLTable.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/schema/SchemaTable.kt @@ -1,19 +1,19 @@ -package com.bartlomiejpluta.base.editor.database.model +package com.bartlomiejpluta.base.editor.database.model.schema import org.kordamp.ikonli.javafx.FontIcon import tornadofx.observableListOf import java.sql.Connection -class SQLTable(val database: SQLDatabase, name: String) : SQLElement { +class SchemaTable(val database: SchemaDatabase, name: String) : Schema { override var name: String = name private set(value) { field = value.toUpperCase() } - val columns = observableListOf() + val columns = observableListOf() fun addColumn(name: String, type: ColumnType, nullable: Boolean, primary: Boolean) { - val column = SQLColumn(this, name, type, nullable, primary) + val column = SchemaColumn(this, name, type, nullable, primary) columns += column } diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/service/DatabaseService.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/service/DatabaseService.kt index cfe26f55..5319db08 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/service/DatabaseService.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/service/DatabaseService.kt @@ -1,9 +1,9 @@ package com.bartlomiejpluta.base.editor.database.service -import com.bartlomiejpluta.base.editor.database.model.SQLDatabase +import com.bartlomiejpluta.base.editor.database.model.schema.SchemaDatabase import java.sql.Connection interface DatabaseService { - val database: SQLDatabase + val database: SchemaDatabase fun run(op: Connection.() -> Unit) } \ No newline at end of file diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/service/H2DatabaseService.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/service/H2DatabaseService.kt index 482d2fc3..6034cf27 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/service/H2DatabaseService.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/service/H2DatabaseService.kt @@ -1,7 +1,7 @@ package com.bartlomiejpluta.base.editor.database.service -import com.bartlomiejpluta.base.editor.database.model.ColumnType -import com.bartlomiejpluta.base.editor.database.model.SQLDatabase +import com.bartlomiejpluta.base.editor.database.model.schema.ColumnType +import com.bartlomiejpluta.base.editor.database.model.schema.SchemaDatabase import com.bartlomiejpluta.base.editor.project.context.ProjectContext import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service @@ -9,9 +9,9 @@ import java.sql.Connection @Service class H2DatabaseService : DatabaseService { - override val database: SQLDatabase + override val database: SchemaDatabase get() { - val db = SQLDatabase() + val db = SchemaDatabase() run { val results = prepareStatement("SHOW TABLES").executeQuery() diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/view/list/TablesListView.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/view/list/TablesListView.kt index 167dcdb0..1937bb9e 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/view/list/TablesListView.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/view/list/TablesListView.kt @@ -2,27 +2,32 @@ package com.bartlomiejpluta.base.editor.database.view.list import com.bartlomiejpluta.base.editor.database.component.SQLElementCell import com.bartlomiejpluta.base.editor.database.model.* -import com.bartlomiejpluta.base.editor.database.model.Field +import com.bartlomiejpluta.base.editor.database.model.data.DataField +import com.bartlomiejpluta.base.editor.database.model.data.DataRecord +import com.bartlomiejpluta.base.editor.database.model.data.Query +import com.bartlomiejpluta.base.editor.database.model.schema.Schema +import com.bartlomiejpluta.base.editor.database.model.schema.SchemaDatabase +import com.bartlomiejpluta.base.editor.database.model.schema.SchemaTable import com.bartlomiejpluta.base.editor.database.service.DatabaseService import com.bartlomiejpluta.base.editor.file.model.InMemoryStringFileNode import com.bartlomiejpluta.base.editor.main.controller.MainController import com.bartlomiejpluta.base.editor.project.context.ProjectContext import javafx.scene.control.TreeItem import org.kordamp.ikonli.javafx.FontIcon +import tornadofx.* import java.sql.Connection import java.sql.SQLException -import tornadofx.* class TablesListView : View() { private val mainController: MainController by di() private val projectContext: ProjectContext by di() private val databaseService: DatabaseService by di() - private var database: SQLDatabase? = null + private var database: SchemaDatabase? = null private var index = 0 - private val treeView = treeview { + private val treeView = treeview { isShowRoot = false setCellFactory { @@ -61,8 +66,8 @@ class TablesListView : View() { treeView.populate { when (val value = it.value) { - is SQLDatabase -> value.tables - is SQLTable -> value.columns + is SchemaDatabase -> value.tables + is SchemaTable -> value.columns else -> null } } @@ -92,15 +97,15 @@ class TablesListView : View() { columns += metadata.getColumnLabel(i) } - val data = mutableListOf() + val data = mutableListOf() while (results.next()) { - val record = mutableMapOf() + val record = mutableMapOf() for (i in 1..metadata.columnCount) { - record[metadata.getColumnLabel(i)] = Field(results.getObject(i).toString()) + record[metadata.getColumnLabel(i)] = DataField(results.getObject(i).toString()) } - data += Row(record) + data += DataRecord(record) } mainController.openQuery(Query(name, columns, data)) @@ -109,12 +114,12 @@ class TablesListView : View() { refresh() } - private fun renameElement(element: SQLElement, newName: String): SQLElement { + private fun renameElement(element: Schema, newName: String): Schema { onConnection { element.rename(this, newName) } return element } - private fun deleteElement(element: SQLElement) { + private fun deleteElement(element: Schema) { onConnection(element::delete) } } \ No newline at end of file diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/view/query/QueryResultView.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/view/query/QueryResultView.kt index 25c57d8b..f957d6dc 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/view/query/QueryResultView.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/view/query/QueryResultView.kt @@ -1,8 +1,8 @@ package com.bartlomiejpluta.base.editor.database.view.query import com.bartlomiejpluta.base.editor.database.component.QueryFieldCell -import com.bartlomiejpluta.base.editor.database.model.Field -import com.bartlomiejpluta.base.editor.database.model.Row +import com.bartlomiejpluta.base.editor.database.model.data.DataField +import com.bartlomiejpluta.base.editor.database.model.data.DataRecord import com.bartlomiejpluta.base.editor.database.viewmodel.QueryVM import javafx.scene.control.TableColumn import tornadofx.* @@ -10,7 +10,7 @@ import tornadofx.* class QueryResultView : View() { private val queryVM = find() - private val table = tableview { + private val table = tableview { } init { @@ -25,7 +25,7 @@ class QueryResultView : View() { queryVM.item?.let { query -> table.items.addAll(query.data) query.columns.map { column -> - TableColumn(column).apply { + TableColumn(column).apply { setCellValueFactory { it.value.fields[column].toProperty() } diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/viewmodel/QueryVM.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/viewmodel/QueryVM.kt index a8c42296..7b9a0a73 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/viewmodel/QueryVM.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/viewmodel/QueryVM.kt @@ -1,6 +1,6 @@ package com.bartlomiejpluta.base.editor.database.viewmodel -import com.bartlomiejpluta.base.editor.database.model.Query +import com.bartlomiejpluta.base.editor.database.model.data.Query import tornadofx.ItemViewModel import tornadofx.getValue diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/controller/MainController.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/controller/MainController.kt index c0fe534c..5e46fee5 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/controller/MainController.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/controller/MainController.kt @@ -8,7 +8,7 @@ import com.bartlomiejpluta.base.editor.audio.viewmodel.SoundAssetDataVM import com.bartlomiejpluta.base.editor.code.model.CodeScope import com.bartlomiejpluta.base.editor.code.viewmodel.CodeVM import com.bartlomiejpluta.base.editor.command.context.UndoableScope -import com.bartlomiejpluta.base.editor.database.model.Query +import com.bartlomiejpluta.base.editor.database.model.data.Query import com.bartlomiejpluta.base.editor.database.viewmodel.QueryVM import com.bartlomiejpluta.base.editor.entityset.view.importing.ImportEntitySetFragment import com.bartlomiejpluta.base.editor.entityset.viewmodel.EntitySetAssetDataVM